在c++中,類的拷貝主要是通過拷貝建構函式和賦值函式,還有就是為拷貝專門實現的成員方法。
拷貝建構函式和賦值函式在使用者沒有提供的情況下是由c++ 編譯器自動生成的,是public成員,因此預設的c++類都有拷貝功能。
若讓乙個c++類不能被拷貝,可顯式地宣告類的拷貝建構函式和賦值函式為私有函式,從而達到該類不可被拷貝的目的。
下面提供乙個簡單的基類,任何從此類繼承的派生類都不可被拷貝。
1/*2*任何繼承該類的派生類都不能進行複製和拷貝3*
4*/56
class
noncopyable
710 ~noncopyable(){}
11private
:12 noncopyable(const noncopyable &)
13const noncopyable& operator=(const noncopyable &);
14};
15
C 實現不可被複製的類
c 語言程式設計中,類的拷貝主要是通過拷貝建構函式和賦值函式來進行,再者就是為拷貝專門實現的成員方法。由於拷貝建構函式和賦值函式在使用者為提供的情況下是由c 編譯器自動生成的,而且是public成員,因此預設的c 類都有拷貝功能。乙個預設的c 類所擁有的成員函式 class empty 空類empt...
memcpy內容拷貝,類不行的原因
最近的工作是將乙個完整的狀態結構體給儲存下來,動態重新整理儲存沒做到,這個結構體還是比較經典的普通結構體,是可以使用memcpy進行深拷貝的。但是後來我居然想拷貝類,當然是失敗了。錯誤 double free or corruption 在memcpy類物件發生的該錯誤,實際上使用memcpy只是對...
C 函式中不可被宣告為虛函式的函式
常見的不不能宣告為虛函式的有 普通函式 非成員函式 靜態成員函式 內聯成員函式 建構函式 友元函式。1 為什麼c 不支援普通函式為虛函式?普通函式 非成員函式 只能被overload,不能被override,宣告為虛函式也沒有什麼意思,因此編譯器會在編譯時邦定函式。2 為什麼c 不支援建構函式為虛函...