程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言基礎知識 >> C++函數返回值為對象時,構造析構函數的執行細節

C++函數返回值為對象時,構造析構函數的執行細節

編輯:C語言基礎知識

看如下代碼:
代碼如下:

#include<iostream>
class TestConstructor
{
public:
    TestConstructor()
    {
        std::cout<<"TestConstructor()"<<std::endl;
    }
    ~TestConstructor()
    {
        std::cout<<"~TestConstructor()"<<std::endl;
    }
    TestConstructor(const TestConstructor& testObj)
    {
        std::cout<<"TestConstructor(const TestConstructor&)"<<std::endl;
    }
    TestConstructor& operator = (const TestConstructor& testObj)
    {
        std::cout<<"TestConstructor& operator = (const TestConstructor& testObj)"<<std::endl;
        return *this;
    }
};
TestConstructor testFunc()
{
    TestConstructor testInFunc;  //3、調用TestConstructor() 生成對象testInFunc
    return testInFunc;           //4、調用TestConstructor(const TestConstructor&) 生成臨時對象
                                 //5、調用析構函數,析構對象testInFunc
}
int main()
{
    TestConstructor test;  //1、調用TestConstructor() 生成對象test
    test = testFunc();     //2、調用testFunc()    //6、調用等號把臨時對象復制給對象test  //7、調用析構函數,析構臨時對象
    return 0;              //8、調用析構函數,析構對象test
}

看輸出:

有注釋,有輸出。執行細節,一目了然了吧

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved