nya*_*108 8 c++ getter const-correctness shared-ptr
将类的const正确性扩展到其尖头成员的正确方法是什么?在示例代码中,get方法的常量版本是否会创建一个std::shared_ptr其引用计数器与内部成员相同m_b,或者是否重新开始计数0?
class A
{
std::shared_ptr< B > m_b;
public:
std::shared_ptr< const B > get_b( ) const
{
return m_b;
}
std::shared_ptr< B > get_b( )
{
return m_b;
}
}
Run Code Online (Sandbox Code Playgroud)
shared_ptr当你从另一个构建时,它将始终保留引用计数shared_ptr; 不安全地使用它的唯一方法是从原始指针构造:shared_ptr<...>(my_ptr.get()) // don't do this.
您可能也对propagate_const包装器感兴趣,它位于Library Fundamentals TS v2中,因此可能很快就会在您的实现中提供.