我正在查看Boost.Any源代码,其中的
void clear()
实现如下:void clear() BOOST_NOEXCEPT
{
any().swap(*this);
}
它基本上创建了一个临时变量,并将数据与临时变量进行交换,然后临时变量将在其析构函数中删除。我本来会简单地写:
void clear() BOOST_NOEXCEPT
{
delete content;
content = 0;
}
除了方法swap
是一个简单的一行代码之外,这种方法还有其他(不)优点吗?