Steady Blog
17. 생성자, 소멸자 본문
* 변수 초기화
1. int a = 3;
2. int a;
a= 3;
3. int a(3); // c++ 초기화
* 복사 생성자 호출
1. 객체로 객체를 초기화 할때
2. 함수의 매개변수로 객체를 전달할 때.
3. 함수의 return value로 객체를 return 할때.
<예제 문제>
복사 생성자 예제
class AAA
{
int val;
public:
AAA(int n)
{
val = n;
}
AAA(AAA &a) //복사 생성자.
{
val = a.val;
}
void showData()
{
cout<<val<<endl;
}
};
void ch_test()
{
AAA a1(10);
a1.showData();
AAA a2(a1);
a2.showData();
}
<예제 문제>
복사 생성자 1. 객체로 객체를 초기화 할때
<예제 문제>
복사 생성자
2. 함수의 매개변수로 객체를 전달할 떄
class AAA2
{
int val;
public:
AAA2(int i):val(i){}
AAA2(AAA2 &a)
{
cout<<"AAA2 복사 생성자 호출"<<endl;
val = a.val;
}
void ShowData()
{
cout<<"val : "<<val<<endl;
}
};
void test(AAA2 b)
{
b.ShowData();
}
void ch8_01()
{
AAA2 obj(30);
test(obj);
}
<예제 문제>
복사 생성자
3. 함수의 return 값으로 객체를 return 할때.
class AAA3
{
int val;
public:
AAA3(int i=0):val(i) {cout<<"생성자 호출 "<<this<<endl;}
AAA3(AAA3&a)
{
cout<<"AAA3 복사 생성자 호출"<<this<<endl;
val = a.val;
}
~AAA3()
{
cout<<"소멸자 호출"<<this<<endl;
}
void showData()
{
cout<<"val : "<<val<<endl;
}
};
AAA3 test()
{
AAA3 a(10);
return a;
}
void ch8_02()
{
AAA3 b;
b = test(); // 임시 변수 생김 AAA3 임시 = a;
b.showData();
}
'Programing > C++' 카테고리의 다른 글
19. 정적변수 (0) | 2012.09.04 |
---|---|
18. const변수 (0) | 2012.09.04 |
14. 포인터 배열 (0) | 2012.09.04 |
13. 동적 할당 (0) | 2012.09.04 |
12. Class (0) | 2012.09.04 |