将返回的堆栈对象分配给参考变量

时间:2019-05-02 04:44:52

标签: c++

在下面的示例中,函数fn()返回对象class A的副本,在main()方法中,此副本被分配给class A类型的引用

class A
{
public:
    A() { std::cout << "c'tor\n"; }
    A(A const &) { std::cout << "Copy\n"; }
    ~A() { std::cout << "d'tor\n"; }
};

A fn()
{
    A a;
    return a;
}

int main()
{
    A & a = fn();
}

所以我想了解A & a = fn();中的main()是否安全执行?它似乎在Visual Studio上可以编译。如果这是安全的操作,则a中的main()实际指向什么,因为返回值是在堆栈上创建的,一旦从fn()返回,该值应该已经平仓?

谢谢

0 个答案:

没有答案