相信大家對複製建構函式與過載=運算子都不陌生,但是兩者幾乎是等效的,這會使很多萌新一臉懵逼,究竟這行**是呼叫了複製建構函式還是呼叫了operator=函式呢?下面我們就通過實驗來**這個問題
ide:visual studio 2017
1.新建乙個專案
2.新建乙個類,名為testclass,原始檔如下
#include "stdafx.h"
#include "testclass.h"
testclass::testclass()
testclass::~testclass()
testclass::testclass(const testclass & clazz)
testclass & testclass::operator=(const testclass & clazz)
3.編寫main函式
#include "stdafx.h"
#include "testclass.h"
void func(testclass);
int main()
void func(testclass clazz)
呼叫建構函式
呼叫複製建構函式
呼叫過載的=運算子
呼叫複製建構函式
對照**,可以得出如下結論
1.構造乙個物件呼叫其建構函式
2.當乙個物件並不存在時使其等於另乙個物件時會呼叫複製建構函式
3.當乙個物件存在時使其等於另乙個物件時會呼叫過載的賦值運算子
4.該物件按值傳遞給函式時,同樣會呼叫複製建構函式
當有新物件產生時,就會呼叫複製建構函式
當無新物件產生時,就會呼叫過載的賦值運算子
C 中類的建構函式與複製建構函式
建構函式是類的特殊的成員函式,只要建立類型別的新物件,都要執行建構函式。建構函式的工作是保證每個物件的資料成員具有合適的初始值。建構函式的名字與類的名字相同,並且不能指定返回型別。像其他任何函式一樣,它們可以沒有形參,也可以定義多個形參。複製建構函式是一種特殊建構函式,具有單個形參,該形參 常用co...
c 中複製建構函式
在c 中自動提供這些成員函式 1,預設的建構函式,如果自定義的類中,沒有自定義建構函式時,自動會呼叫此預設函式 2,複製建構函式,如果自定義類中沒有定義,在物件複製時,會自動呼叫 作用 複製建構函式用於將乙個複製到乙個新建立的物件中。3,賦值運算子 將已有的物件賦給另乙個物件時,將使用過載的賦值操作...
C 學習 建構函式與複製建構函式
在建構函式的函式頭初始化 includeusing namespace std class rectangle private const int length int width int main void 複製建構函式 預設複製建構函式的機制 includeusing namespace std...