論C 中複製建構函式與operator

2021-08-13 23:36:18 字數 983 閱讀 4097

相信大家對複製建構函式與過載=運算子都不陌生,但是兩者幾乎是等效的,這會使很多萌新一臉懵逼,究竟這行**是呼叫了複製建構函式還是呼叫了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...