gpt4 book ai didi

c++ - 为什么不使用 boost::optional 作为更好的 scoped_ptr

转载 作者:行者123 更新时间:2023-11-30 01:53:54 25 4
gpt4 key购买 nike

为什么不经常使用 boost::optional 作为 scoped_ptr,它似乎更好,因为对象是在堆栈而不是堆上创建的。但我从未见过它以这种方式使用。我的问题是,除了明显无法进行多态性之外,使用 boost::optional 作为一种 scoped_ptr 有什么缺点?

最佳答案

原因是多态scoped_ptr的重点。否则,您只需在堆栈上本地声明变量。

int main()
{
Class object(52, 25); //sample declaration, with constructor arguments passed
}

编辑 1(对来自评论的附加信息的回应):

boost::scoped_ptr 其实很少用于你描述的目的(主要是因为你不能复制也不能移动boost::scoped_ptr,使得你存储的类它不可复制且不可移动)。看起来 boost::optional 适合这个目的,但是......

请注意,在本地使用 boost::optional(即,不从函数返回)没有什么意义,因为您可以随意在堆栈上创建对象:

void another_function()
{
if(some_condition())
{
Class object(0, 0); // create the object
// use the object
}
else
{
// don't use the object
}
}

关于c++ - 为什么不使用 boost::optional 作为更好的 scoped_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22636407/

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