Steady Blog

17. 생성자, 소멸자 본문

Programing/C++

17. 생성자, 소멸자

우유먹고쑥 2012. 9. 4. 00:01

 * 변수 초기화

  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