2010년 8월 23일 월요일

복사 생성자 and operator=


#include <iostream>
using namespace std;


class CA
{
public :
 int nA ;

 CA()
 {
  cout << "A 생성자 호출"<<endl;
 };

 CA(const CA & a)
 {
  cout<<"A 복사생성자 호출"<<endl;
 };

 CA& operator= (const CA &ca)
 {
  cout<<"A operator="<<endl;
  if ( this == &ca ) return (*this);
  nA = ca.nA;
 }
};

 

class CB : public CA
{
public :
 int nB ;
 CB():CA()
 {
  cout<<"B 생성자 호출"<<endl;
 };

 CB(const CB & b)
 {
  cout<<"B 복사생성자 호출"<<endl;
 };

 CB& operator= ( const CB &cb)
 {
  cout<<"B operator="<<endl;
  if ( this == &cb ) return (*this);
  nB = cb.nB;  
 }

};

 

int _tmain(int argc, _TCHAR* argv[])
{
 CB b; /// A생성자 > B생성자

 CB BB(b);  /// A생성자 > B복사생성자

 CB BBB = b; /// A생성자 > B복사생성자

 BB = b; /// operator =

 return 0;
}

댓글 없음:

댓글 쓰기