1. 程式人生 > >const 引用延長生命週期

const 引用延長生命週期

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;
}

我們可以通過程式碼和輸出可以看出, 前者是在結束的時候進行析構, 後面的引用是在函式結束以後析構的。