gpt4 book ai didi

c++ - 临时工的生命周期

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:19:41 25 4
gpt4 key购买 nike

<分区>

下面的代码显示在函数 create() 中创建的对象的生命周期被延长到在 main 中创建的 const ref 的生命周期,< em>这在所有情况下都是正确的吗?我的意思是我们可以在某些情况下通过创建对它的引用来延长临时的生命周期?或者在这种特定情况下,编译器行为不当?

用MSVC2005编译

#include <iostream>

class testClass
{
public:
testClass()
{
std::cout << "in testClass " << ((void*)this) << std::endl;
}

~testClass()
{
std::cout << "in ~testClass " << ((void*)this) << std::endl;
}
};


testClass create()
{
return testClass();
}


int main()
{
{
testClass const& obj = create();

std::cout << "we got a const reference to obj " << ((void*)&obj) << std::endl;
}

return 0;
}

输出

in testClass 0018FF13
we got a const reference to obj 0018FF13
in ~testClass 0018FF13

当然其他人可能会得到不同的地址......在上面的例子中,我期待用函数 create() 创建的对象的析构函数,将在行之前调用

std::cout << "we got a const reference to obj " << ((void*)&obj) << std::endl; 

被执行。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com