C++函數(shù)返回值為對象時(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() 生成對象testInFunc return testInFunc; //4、調(diào)用TestConstructor(const TestConstructor&) 生成臨時(shí)對象 //5、調(diào)用析構(gòu)函數(shù),析構(gòu)對象testInFunc } int main() { TestConstructor test; //1、調(diào)用TestConstructor() 生成對象test test = testFunc(); //2、調(diào)用testFunc() //6、調(diào)用等號把臨時(shí)對象復(fù)制給對象test //7、調(diào)用析構(gòu)函數(shù),析構(gòu)臨時(shí)對象 return 0; //8、調(diào)用析構(gòu)函數(shù),析構(gòu)對象test } 看輸出:
有注釋,有輸出。執(zhí)行細(xì)節(jié),一目了然了吧 |
|