참고 : 열혈강의 C++ 프로그래밍 책 기본적으로 복사 생성자 특성 1. 정의하지 않으며 디폴트 복사 생성자가 삽입된다. 2. 디폴트 복사 생성자는 멤버 대 멤버의 복사(얕은 복사)를 진행한다 3. 생성자 내에서 동적 할당을 한다면, 그리고 깊은 복사가 필요하다면 직접 정의해야 한다. // 복사 생성자 void main() { Class c1(1, 2); Class c2 = c1; } 대입 연산자 특성 1. 정의하지 않으면 디폴트 대입 연산자가 삽입된다. 2. 디폴트 대입 연산자는 멤버 대 멤버의 복사(얕은 복사)를 진행한다. 3. 연산자 내에서 동적 할당을 한다면, 그리고 깊은 복사가 필요하다면 직접 정의해야 한다. // 대입 연산자 void main) { Class c1(1, 2); Class c2(3, 4); c2 = c1; }; 대입 연산자를 이용하면서 동적할당을 한다면 주의할 점이 있다. #include <iostream> using namespace std; class Person { private: char* name; int age; public: Person(char* myname, int myage) { int len = strlen(myname) + 1; name = new char[len]; strcpy(name, myname); age = myage; } void ShowPersonInfo() const { cout << "이름 : " << name << endl; cout << "나이 : " << age << endl; } Person& operator=(const Person& ref) { // 생성자에 동적 할당한 것을 해제해야 메모리 누수를 방지한다. delete []name; int len ...