c++語言程式設計中,類的拷貝主要是通過拷貝建構函式和賦值函式來進行,再者就是為拷貝專門實現的成員方法。
由於拷貝建構函式和賦值函式在使用者為提供的情況下是由c++編譯器自動生成的,而且是public成員,因此預設的c++類都有拷貝功能。
乙個預設的c++類所擁有的成員函式:
class
empty
{}; //空類empty
empty(); //預設建構函式
empty(const
empty &);//預設拷貝構造
~empty(); //預設析構函式
empty & operator=(const
empty &)//預設賦值運算子
empty *operator&();//取位址運算子
const
empty *operator &() const; //取位址運算子const
程式設計師有時候需要給檔案加上許可權,讓這些機密檔案不能被隨意拷貝,這時候就需要用c++實現不可被拷貝的類。
若讓乙個c++類不能被拷貝,可顯式地宣告類的拷貝建構函式和賦值函式為私有函式,從而達到該類不可被拷貝的目的。
下面簡單地提供乙個基類,任何需要提供不可被拷貝功能的c++類只需從此類派生即可。
noncopyable類示例:
//通過私有化拷貝建構函式和賦值函式而達到物件不可被拷貝的目的
//任何需提供不能被拷貝功能的類可以直接從noncopyable派生即可
class noncopyable
;
C 不可被拷貝類的實現
在c 中,類的拷貝主要是通過拷貝建構函式和賦值函式,還有就是為拷貝專門實現的成員方法。拷貝建構函式和賦值函式在使用者沒有提供的情況下是由c 編譯器自動生成的,是public成員,因此預設的c 類都有拷貝功能。若讓乙個c 類不能被拷貝,可顯式地宣告類的拷貝建構函式和賦值函式為私有函式,從而達到該類不可...
不可複製類的原理和實現
主要原理在 三 四兩條 一.拷貝建構函式與賦值操作符 class a a a a b1 a 拷貝建構函式的例項 a b2 a 賦值操作符的例項 二.拷貝建構函式的應用例項 1.同一型別的物件顯示或隱式初始化乙個物件,如下 class a a a a b a 2.作為函式的實參,如下 void wor...
設計乙個不能被複製的類
在c 中如果要求乙個類能被複製需要實現賦值運算子或者複製建構函式,因此要想乙個類不能被複雜,只需將這兩個函式設定private訪問屬性即可class nocopy private nocopy const nocopy copy nocopy operator const nocopy copy i...