std::unique_ptr::operator->
的签名如下:
std::unique_ptr::operator->
is as follows:pointer operator->() const noexcept;
因此,operator->
是const但返回一个可变指针。这允许像下面这样的代码:
void myConstMemberFunction() const
{
myUniquePtrMember->nonConstFunction();
}
为什么标准允许这样做,以及防止像上面展示的用法的最佳方法是什么?
const
是浅层的。一个int* const
也可以允许你修改所指向的对象。 - Bo Perssonstd::experimental::propagate_const
。 - T.C.const
的常见误解。 - Lightness Races in Orbitpropagate_const
的提示。这似乎是确保智能指针成员的常量正确性的好方法。 - khuttun