首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ 六種構造函數與 9 種調用場景深度解析

     編輯:關於C++

六種構造函數

  1. 默認構造函數
  2. 帶參數構造函數
  3. 拷貝構造函數 Test(const Test&)
  4. 移動構造函數 (C++11) Test(Test&&)
  5. 委託構造函數 (C++11)
  6. 初始化列表構造 Test(initializer_list)

9 種調用場景實測

定義類 Test 含構造/拷貝/賦值/析構輸出。測試函數 Test fun(Test t) 以值/引用傳參、以值/引用返回,配合外部調用方式(直接初始化、賦值、返回值初始化),觀察構造/拷貝/移動/析構次序。

核心結論

  • 調用拷貝構造的情況:對象初始化對象、值傳參、非引用返回值創建臨時對象。
  • 優化技巧:① 參數用 const 引用避免拷貝。② 返回局部對象時,編譯器實施 NRV (Named Return Value) 優化,直接構造於調用處,省去拷貝。③ 返回值初始化而非賦值(Test t1 = fun(t);)觸發 NRV。
  • 禁忌:引用返回局部臨時對象會導致懸空引用,未定義行為。

代碼片段


class Test {
public:
    Test(int d=0):data(d){ cout<<"Ctor "<
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved