c 中拷貝建構函式與「 運算子過載」

2021-06-22 13:04:01 字數 637 閱讀 6139

本文只是演示何時呼叫拷貝建構函式,何時用=運算子過載

不考慮類的實現正確。

問題 someclass a; 

someclass b = a; //呼叫的是拷貝建構函式, 還是=運算子過載?

演示** ::

#include class tc

~tc()

tc(tc &a)

tc& operator= (tc a)

private:

int x;

};int main(int argc, const char * argv)

輸出 ::

tc() 

tc(tc &a)

tc(tc &a)

tc= 

~tc()

~tc()

~tc()

分析 :

tc a ; //這個不用考慮 ,對應 tc() 

tc b = a; // 這個對應 tc(tc &a) ,

b = a; // 這個對應      tc(tc &a) 和 tc=  . 分為兩步,第一步 a到引數a,屬於定義,拷貝構造. 然後內部執行.

a,b 兩個,加上乙個引數 t a. 總共3次構造.

拷貝建構函式與賦值運算子過載

拷貝建構函式 只有單個形參,該形參是對本類型別物件的引用 一般常用const修飾 在用已存在的類型別物件建立新物件時由編譯器自動呼叫。1.拷貝建構函式是建構函式的乙個過載形式 class date date const date d private int year int month int da...

拷貝建構函式與過載賦值運算子

注意 該作者部落格已遷移至 如果乙個建構函式的第乙個引數是自身類型別的引用,且任何額外的引數都有預設值,則此建構函式是拷貝建構函式。c premier裡的定義 拷貝建構函式應用的場景 預設拷貝建構函式 class ctest ctest void test ctest obj intmain 這個程...

拷貝建構函式和運算子過載

拷貝建構函式應用的場合由以下幾個方面 1 函式的引數是乙個物件,並且是值傳遞方式 2 函式的返回值是乙個物件,並且是值傳遞方式 3 用乙個物件初始化另外乙個物件 由此,當函式的引數或者返回值為乙個物件時,使用的時候要小心,因為值傳遞的時候執行的是位拷貝,並不會呼叫物件的建構函式,也就是說生成的臨時物...