詳解:
例子:
// constructor.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"
#include using namespace std;
class ctest
ctest(const ctest &rhs)
ctest &operator=(const ctest &rhs)
private:
int m_i;
};int _tmain(int argc, _tchar* argv)
執行結果:
需要注意的幾點:
1、系統會自動實現預設建構函式,複製建構函式和賦值操作。
2、只要自己實現了乙個建構函式(包括複製建構函式),系統不再自動生成預設建構函式;
3、自己實現了乙個建構函式(沒有實現複製建構函式),系統會自動生成複製建構函式;
4、ctest test3 = test1; 這種情況下呼叫的是複製建構函式,而不是賦值操作;
5、建構函式預設支援隱式轉換,可以使用
explicit來避免隱式轉換;
6、深拷貝和淺拷貝,系統預設實現的是淺拷貝。
拷貝建構函式和賦值操作符
類有預設的建構函式 拷貝建構函式 析構函式 賦值操作運算子 和取位址運算子 預設的賦值操作運算子和預設的拷貝建構函式類似,對於每個非static成員,都是執行逐個成員賦值 memberwise assignment 同時也是按位賦值 bitwise copy 即,只是簡單地將每個類成員的記憶體中的直...
賦值操作符和拷貝建構函式
最近開發乙個專案,用到了單例模式,標頭檔案大概如下 class crecguard crecguard private void guard void unguard private critical section cs template class csingleton 禁止建構函式 csing...
c 複製建構函式和賦值操作符區別
今天做c primer的習題,被複製建構函式和賦值符的區別弄暈了。簡單地說,有一道題目如下描述 class t1 class t2 t1 我先看見有乙個等號,以為就是賦值符來做的,其實並不是這樣的。做乙個實驗好了 cpp view plain copy class ctest ctest ctest...