class c{
pirvate :
int num;
public :
c(int numm)
{
num= numm;
}
c(const c& cc)
{
num = cc.num;
}
}
이러면
메인에서
c c1(10);
c c2 = c1
이렇게 해주면 deep copy 된다고 하던데
문법상
c c2(c1) 이렇게 해줘야되는거 아님??
위에껀 포인터만 복사하는거 아닌가?
pirvate :
int num;
public :
c(int numm)
{
num= numm;
}
c(const c& cc)
{
num = cc.num;
}
}
이러면
메인에서
c c1(10);
c c2 = c1
이렇게 해주면 deep copy 된다고 하던데
문법상
c c2(c1) 이렇게 해줘야되는거 아님??
위에껀 포인터만 복사하는거 아닌가?
알려줘 ;; c2 = c1 이게 c2(c1) 로드도하는건가 뭐즤
왜 안알려주는고야 ㅜㅜ
=은 복사 대입 연산하라는건데 따로 정의하지 않으면 디폴트로 깊은 복사를 하는거임. c2(c1)은 복사생성자를 이용한 깊은 복사고. C++에서는 복사대입연산자랑 복사생성자를 직접 정의해주는게 좋고, 더 좋은건 무브복사생성자랑 무브복사대입연산자까지 오버로딩 해주는거 - return 0;
정확히는 임플리시트 복사 대입 연산자, 임플리시트 복사 생성자라고 부름미다 - return 0;