gpt4 book ai didi

c++ - 将交换与对象自杀一起使用

转载 作者:太空狗 更新时间:2023-10-29 20:36:50 25 4
gpt4 key购买 nike

我正在查看 Boost.Any source code void clear() 的实现如下所示:

void clear() BOOST_NOEXCEPT
{
any().swap(*this);
}

它基本上创建了一个临时文件并与临时文件交换数据,然后临时文件将在它的析构函数中删除。我会简单地写:

void clear() BOOST_NOEXCEPT
{
delete content;
content = 0;
}

除了方法 swap 是一个简单的单行代码之外,这种方法还有其他(缺点)优势吗?

最佳答案

您的版本之所以有效,是因为它执行析构函数的工作 - delete content - 然后是默认构造函数的工作 - content = 0。我只能通过检查 any.hpp 中的代码来相当确定您的实现是正确的。

Boost版本做同样的工作,没有重复构造函数和析构函数的代码。如果实现发生变化,它将继续工作。我也可以相当确定它是正确的,而无需查看源代码的其余部分。

关于c++ - 将交换与对象自杀一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37136173/

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