Programming/C/C++

C++에서 복사생성자를 사용하는 이유.

일상의평화 2011. 3. 16. 18:08

C++에서 복사생성자를 사용할때 주의 사항
 * 묵시적 변환
 만약,
class example{
private:
public:
  example(){}
};
void main()
{
  example a;
  example b=a;
}

라는 코드가 있을 때
example b=a;
라는 코드는
묵시적으로 example b(a);
라는 코드로 묵시적으로 변환.

(참고 이를 막기 위해 explicit라는 키워드가 존재. 묵시적 변환을 막으려면, 복사 생성자 함수 앞에 explicit를 넣어주면, 묵시적으로 변환하지 않음.)

=> 형식

class example{
private:
public:
  example(){}
  example(const example &a){}
};

요롷게 선언을 해주면 됨.
함수 오버로딩에 따라 클래스를 복사할경우, 클래스 하나를 다시 생성해줌.