我正在为 C++ 中的共享指针编写访问器方法,大意如下:
class Foo {
public:
return_type getBar() const {
return m_bar;
}
private:
boost::shared_ptr<Bar> m_bar;
}
所以为了支持getBar()
的常量性,返回类型应该是一个boost::shared_ptr
,它防止修改指向的Bar
。我猜测要返回的类型是shared_ptr<const Bar>
,这样可以做到,而const shared_ptr<Bar>
则会防止重新分配指针本身指向不同的Bar
,但允许修改它所指向的Bar
… 但是,我不确定。如果有人确切知道,请确认一下,或者如果我错了,请纠正我。谢谢!
*
和->
运算符的文档来确认这一点。 - syamT *const
和T const *
有什么区别吗?没有。 - user529758const
通常修改其 _前面的内容,因此T *const
是指向T
的const
指针,而T const*
是指向const T
的指针。最好避免在没有前置内容的情况下使用const
。 - James KanzeT *const
和T const *
之间的区别与const shared_ptr<T>
和shared_ptr<const T>
之间的区别相同。 - Jonathan WakelyT *const
,那么为什么不写成shared_ptr<T> const
呢?同样地,你写的是T const*
,那么为什么不写成shared_ptr<T const>
呢?为什么不保持正交性,在每个地方都加上const
(因为在某些情况下必须在后面加上)? - James Kanze