복사생성자와 대입연산자의 차이

복사생성자와 복사대입연산자의 차이

복사생성자(copy constructor) 
=> 
 어떤 객체의 초기화를 위해 그와
같은 타입의 객체로 부터 초기화할때 호출되는 함수.
 
복사대입연산자(copy assignment operator):
=>
 
같은 타입의 다른 객체에 어떤 객체의 값을 복사하는 용도로 쓰이는 함수입니다.

둘다 정의를 안해줄경우 디폴트가 있다!
디폴트 복사생성자, 디폴트 대입연산자 둘은 모두 얕은 복사를한다.!!! 
그러므로 포인터를 가지는 경우 복사생성자와 대입연산자를 정의해주는 습관을 들이자! 아니 반드시하자! 



예를들어)))

class SK{
public:
  SK();
  SK(const SK& temp);        //복사생성자
  SK& operator=( const SK& temp ); //복사대입연산자
};


int main()
     SK S1;
     SK S2;

     SK S3 = S1;         //복사생성자 호출됨(초기화되는 시점이므로)
     S3 = S1;        //복사대입연산자 호출되서 대입됨(초기화X 대입O)
   
    
return 0;

이 글을 공유하기

댓글

Designed by JB FACTORY