C 禁用拷貝構造

2021-08-15 13:51:50 字數 496 閱讀 5912

c++的拷貝構造有點類似於c的結構體拷貝,根據現有的物件拷貝給另乙個物件.

一般來說c++編譯器會自動給類生成拷貝建構函式(前提是呼叫的**中有拷貝構造的行為),

但如果類已經定義了拷貝建構函式 則編譯器不會再去生成.

利用這個特點:

**中如果不希望某個類被拷貝構造,則可以通過過載拷貝建構函式,

並宣告為private屬性來實現.

1

#include

2class test

5int cnt;

6private:

7 test(const test &); //禁止test a(b);

8 test &operator=(const test &); //禁止 a = b;

9 };

1011

int main(int argc, char **argv)

c 拷貝構造

當用乙個已初始化過了的自定義類型別物件去初始化另乙個新構造的物件的時候,拷貝建構函式就會被自動呼叫。也就是說,當類的物件需要拷貝時,拷貝建構函式將會被呼叫。以下情況都會呼叫拷貝建構函式 乙個物件以值傳遞的方式傳入函式體 乙個物件以值傳遞的方式從函式返回 乙個物件需要通過另外乙個物件進行初始化。補充說...

C 拷貝構造

呼叫時機 使用乙個已經建立完的物件來初始化乙個新物件 class person person person const person p private string name intage int main person 構造 person 拷貝構造 person 析構 person 析構 值傳遞...

c 拷貝結構體 拷貝構造

用從不同型別的物件來構造物件complex double real 用實數來構造複數類 用相同型別的物件來構造物件complex complex const that 用另乙個複數來構造複數 注意 如果乙個類沒有定義拷貝建構函式,那麼編譯器會提供乙個預設拷貝建構函式,預設是public 定義乙個複數...