C 複製建構函式和賦值操作符的區別

2021-06-19 22:26:07 字數 403 閱讀 5363



賦值運算子(注意,不是「賦值建構函式」)和拷貝建構函式都是用已有的物件來建立另乙個物件。不同之處在於:拷貝建構函式是生成乙個全新的物件,即

a a (b);//這才是c++風格的初始化

a a = b;//注意,這種風格只是為了與c相容

在這之前a物件是不存在的,或者說還沒有構造好。

賦值operator =()是兩個物件都已經構造好的情況下使用的。即

a = b;

的時候,a和b都已經初始化過了(這裡的「初始化過」包括預設的建構函式初始化)。

如下面例子所示:

#includeusing namespace std;

class a{

public:

a(){cout<<"constructor"<

c 複製建構函式和賦值操作符區別

今天做c primer的習題,被複製建構函式和賦值符的區別弄暈了。簡單地說,有一道題目如下描述 class t1 class t2 t1 我先看見有乙個等號,以為就是賦值符來做的,其實並不是這樣的。做乙個實驗好了 cpp view plain copy class ctest ctest ctest...

C OOP 複製建構函式和賦值操作符

賦值建構函式 賦值操作符 include include include using namespace std class sales item sales item const std string book isbn book units sold 0 revenue 0.0 賦值建構函式 如...

複製建構函式與賦值操作符

乙個類裡是否需要複製建構函式?有時候答案是 是 如果你的類在建構函式裡分配了資源,則可能需要乙個顯式的複製建構函式來管理資源。有析構函式的類通常用析構函式來釋放建構函式分配的資源,這通常也說明需要乙個複製建構函式。如果需要複製建構函式,則多半需要乙個賦值操作符。類x的賦值由x operator 來定...