복사 생성자 2

[Effective C++] 항목 6: 컴파일러가 만들어낸 함수가 필요 없으면 확실히 이들의 사용을 금해 버리자

1. 개요블로그의 주인장인 여울은 게임을 사랑하는 개발자이다. 여울은 게임을 소개하는 프로그램을 만들었데 이 프로그램에는 게임을 나타내는 클래스가 있다.class Game {}; 그런데 이세상에 똑같은 게임이 존재할까요? 아닙니다. 똑같은 게임은 없고 모든 게임은 각자의 이름이 있고 각자의 플레이 방식이 있습니다. 즉 Game객체는 복사본을 만드는 것이 이치에 맞지 않습니다. 그래서 Game이랑 객체 자체를 복사시도를 하면 컴파일이 되지 않았으면 합니다. Game MapleStory;Game BattleGround;Game StarCraft(MapleStory); // 복사를 막아주세요!!MapleStory = BattleGround; // 복사를 막아주세요!! 프로그래머가 어떠한 기능이 수행되기를 ..

[Effective C++] 항목 5: C++가 은근슬쩍 만들어 호출해 버리는 함수들에 촉각을 세우자

1. 컴파일러가 저절로 선언하는 함수들 컴파일러는 직접 선언하지 않으면 자동으로 선언해주는 함수들이 있습니다. 복사 생성자생성자복사 대입 연산자소멸자class Yeoul {private: int* data; public: // 생성자 Yeoul(int val) { data = new int(val); } // 복사 생성자 Yeoul(const Yeoul& rhs) { data = new int(*rhs.data); } // 복사 대입 연산자 Yeoul& operator=(const Yeoul& rhs) { if (this != &rhs) { delete data; data = new int(*rhs.data); } return *this; ..