從條款05中我們知道編譯器為你提供了一些默認copying函數,而在某些情況下,我們不想要編譯器提供的版本,我們自定義copying構造函數和copying assign操作函數,這個時候你無形之中惹惱了我們的編譯器,你不用它的東西,它很"生氣",於是它就開始復仇:你的實現代碼幾乎出錯時,它就是不告訴你.這裡考慮一個類用來表現一個應用用程序事件類型Event:
class Event{
public:
Event(int id):eventID_(id){
}
Event(const Event& rhs):eventID(rhs.eventID_){
}
Event& operator=(const Event& rhs){
eventID_ = rhs.eventID_;
return *this;
}
...
private:
int eventID_;
};
這樣的代碼沒有問題也很合理,接下來我們增加了一個變量DateTime來記錄該事件發生的