在C++中,類的拷貝主要是通過拷貝構造函數和賦值函數,再者就是為拷貝專門實現的成員方法。由於拷貝構造函數和賦值函數在用戶為提供的情況下是由C++編譯器自動生成的,而且是public成員,因此默認的C++類都有拷貝功能。若讓一個C++類不能被拷貝,可顯式地聲明類的拷貝構造函數和賦值函數為私有函數,從而達到該類不可被拷貝的目的。下面簡單地提供一個基類,任何需要提供不可被拷貝功能的C++類只需從此類派生即可。
/*
* 通過私有化拷貝構造函數和賦值函數而達到對象不可被拷貝的目的
* 任何需提供不能被拷貝功能的類可以直接從CNonCopyable派生即可
*/
class CNonCopyable
{
private:
CNonCopyable(const CNonCopyable&);
const CNonCopyable& operator=(const CNonCopyable&);
protected:
CNonCopyable() { }
~CNonCopyable() { }
};