不可複製類的原理和實現

2022-08-21 12:06:13 字數 911 閱讀 6141

主要原理在

三、四兩條

一.拷貝建構函式與賦值操作符

class a;

a a;

a b1(a);    //拷貝建構函式的例項

a b2 = a;  //賦值操作符的例項:

二.拷貝建構函式的應用例項

1.同一型別的物件顯示或隱式初始化乙個物件,如下:

class a;

a a;

a b(a);

2.作為函式的實參,如下:

void work(const a& a);

3.作為函式的返回值

a& geta() const

4.初始化順序容器的元素

5.根據元素初始化式列表初始化陣列元素

三.合成的拷貝建構函式和合成的賦值操作符,如下:

如果使用者沒有顯式定義複製建構函式或賦值操作符,編譯器將會預設的合成乙個複製構造

函式。合成複製建構函式與複製建構函式,或者合成賦值操作符與賦值操作符不同,編譯器預設合成的函式的執行行為是"逐個成員初始化",將新物件初始化為原物件的副本。逐個成員初始化不包括static成員,只負責初始化非static成員。

四.如上所述,為了防止複製和賦值,類可以顯示宣告其拷貝建構函式和賦值操作符為private,如果拷貝建構函式是私有的,將不允許使用者**複製該類型別的物件,編譯器將拒絕任何進行複製的嘗試。

此時,類的友元和成員仍可以複製,當然要想禁止這種情況,也很容易實現。下面是不可複製類的**:

class noncopyable

~noncopyable(){}

private:

noncopyable(const noncopyable &);

const noncopyable& operator=(const noncopyable&);

};

C 實現不可被複製的類

c 語言程式設計中,類的拷貝主要是通過拷貝建構函式和賦值函式來進行,再者就是為拷貝專門實現的成員方法。由於拷貝建構函式和賦值函式在使用者為提供的情況下是由c 編譯器自動生成的,而且是public成員,因此預設的c 類都有拷貝功能。乙個預設的c 類所擁有的成員函式 class empty 空類empt...

如何建立不可複製的單例項類?

目錄 如何建立不可複製的單例項類?建立不可複製的類 建立僅有唯一物件的類 將可以複製的方式全部宣告出來,避免系統實用預設成員函式進行複製。複製的方式主要有 通過過載運算子進行複製,通過拷貝建構函式進行複製,通過轉移建構函式進行複製。以下為 示例 include using namespace std...

類的繼承和實現原理

1.類的繼承例項 class hero aa 11 def init self,name,life,damage self.name name self.life life self.damage damage defattack self,enemy enemy.life self.damage ...