1. 程式人生 > >如何禁用拷貝建構函式和禁用過載賦值運算子

如何禁用拷貝建構函式和禁用過載賦值運算子

自定義了一個類,當你覺得不需要系統預設的拷貝建構函式以及過載賦值運算子時,你需要手動禁用這些。


如果類的成員中有指標的話,淺拷貝方式的結果是兩個不同物件的指標指向同一塊記憶體區域,容易出現訪問衝突,多次delete等錯誤,不是我們所希望的。


禁止拷貝/賦值
將拷貝建構函式和過載賦值運算子設為private來禁止拷貝


#define DISABLE_COPY(Class) \
Class(const Class &); \
Class &operator=(const Class &)


class Widget  
{  
public:  
    int* pi;  
private:  
   DISABLE_COPY(Widget);
}

;

===============