gpt4 book ai didi

c++ - 返回对对象构造函数的引用

转载 作者:行者123 更新时间:2023-11-28 03:44:12 25 4
gpt4 key购买 nike

看看这段代码:

Foo &Bar::Copy()
{
return Bar();
}

类Bar继承自Foo,Foo是一个抽象类。但是当我调用 Bar() 并返回它时,这样做安全吗?或者我会返回将在 Copy() 函数结束时释放的局部变量的地址吗?

非常感谢您的建议!

最佳答案

当调用 Bar(); 时,您在返回引用的隐式临时对象上调用构造函数。如果您打算创建类似 Clone() 的函数,典型的解决方案是使用 new 在堆上创建克隆。您可以使用一种智能指针来简化生命周期管理。您还可以应用协变返回类型以避免在某些情况下使用签名进行类型转换:Bar &Bar::Copy()

关于c++ - 返回对对象构造函数的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8139408/

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