아래 예제코드를 보면 이해가 더 빠를지도….
#include <iostream>
class CPoint {
public:
// 복사 생성자
CPoint (const CPoint &p) : x(p.x), y(p.y) {}
// 생성자 오버로딩
CPoint (int x, int y) : x(x), y(y) {}
void print() {
std::cout << x << " : " << y << std::endl;
}
private:
int x;
int y;
};
int main(void) {
// p1 객체 생성
CPoint p1(12, 13);
p1.print();
// p2 생성자에 p1의 객체를 삽입한 것을 알 수 있다.
CPoint p2(p1);
p2.print();
return 0;
}
#include <iostream>
class CPoint {
public:
// 복사 생성자
CPoint (const CPoint &p) : x(p.x), y(p.y) {}
// 생성자 오버로딩
CPoint (int x, int y) : x(x), y(y) {}
void print() {
std::cout << x << " : " << y << std::endl;
}
public:
int x;
int y;
};
int main(void) {
// p1 객체 생성
CPoint p1(12, 13);
p1.print();
// p2 생성자에 p1의 객체를 삽입한 것을 알 수 있다.
CPoint p2(p1);
p2.print();
// p1의 객체를 변경
p1.x = 123;
p1.y = 345;
p2.print(); // 123 : 345
p1.print(); // 12 : 13
return 0;
}
디폴트 복사 생성자
CString 클래스의 복사 생성자