gpt4 book ai didi

C++ 智能指针取消引用 - 检查它是否已初始化的开销是多少?

转载 作者:太空狗 更新时间:2023-10-29 23:52:09 26 4
gpt4 key购买 nike

所有智能指针(例如,boost::scoped_ptr、boost::optional、std::auto_ptr 等)都进行断言以检查内部指针是否已初始化。取消引用它的次数不是很多是可以的,但是如果次数真的很大(数百万次、十亿次)怎么办?
比如有一个类:

class A
{
public:

A( std::auto_ptr< B > _someObject )
: m_object( _someObject ) {}

B const& getMember() const
{ return *m_object; }

private:
boost::scoped_ptr< B > m_object;
};

someObject 始终不为空,并且在某处 getMember() 被调用了很多次。在每次调用时,都会在 m_object 中进行断言。
最好改用原始指针吗?当然,这会导致创建析构函数来删除原始指针。
在这种情况下,断言会产生明显的影响吗?或者这仍然可以忽略不计?

最佳答案

使用-DBOOST_DISABLE_ASSERTS 编译您的程序并进行比较。但我敢说那个断言的性能损失可以忽略不计。正如@Travis 所说,在 Release模式下,断言可能甚至没有进入您的程序。

关于C++ 智能指针取消引用 - 检查它是否已初始化的开销是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17175152/

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