C++函數(shù)返回值為對(duì)象時(shí),構(gòu)造析構(gòu)函數(shù)的執(zhí)行細(xì)節(jié)
#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、調(diào)用TestConstructor() 生成對(duì)象testInFunc
return testInFunc; //4、調(diào)用TestConstructor(const TestConstructor&) 生成臨時(shí)對(duì)象
//5、調(diào)用析構(gòu)函數(shù),析構(gòu)對(duì)象testInFunc
}
int main()
{
TestConstructor test; //1、調(diào)用TestConstructor() 生成對(duì)象test
test = testFunc(); //2、調(diào)用testFunc() //6、調(diào)用等號(hào)把臨時(shí)對(duì)象復(fù)制給對(duì)象test //7、調(diào)用析構(gòu)函數(shù),析構(gòu)臨時(shí)對(duì)象
return 0; //8、調(diào)用析構(gòu)函數(shù),析構(gòu)對(duì)象test
}
看輸出:
有注釋,有輸出。執(zhí)行細(xì)節(jié),一目了然了吧
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。