const 引用延長生命週期
阿新 • • 發佈:2018-12-21
const可以延長方法返回回來的臨時變數的生存週期。 主要是兩種情況 1:返回的是臨時變數的引用 2:為匿名臨時變數建立引用 前者是錯誤的,返回的那一刻就被delete
#include<iostream> class A { public: A() { a = 10; std::cout << "construct" << std::endl; } ~A() { std::cout << "delete" << std::endl; } int a; }; A aaa() { return A(); } A& bbb() { return A(); } int main() { { const A & a = aaa(); std::cout << a.a << std::endl; const A & b = bbb(); std::cout << b.a << std::endl; } getchar(); return 0; }
我們可以通過程式碼和輸出可以看出, 前者是在結束的時候進行析構, 後面的引用是在函式結束以後析構的。