Estoy escribiendo un método de acceso para un puntero compartido en C ++ que es algo como esto:
class Foo {
public:
return_type getBar() const {
return m_bar;
}
private:
boost::shared_ptr<Bar> m_bar;
}
Por lo tanto, para admitir la constancia del getBar()
tipo de retorno debe haber un boost::shared_ptr
que evite la modificación del Bar
que apunta. Mi conjetura es que shared_ptr<const Bar>
es el tipo que quiero volver a hacer eso, mientras que const shared_ptr<Bar>
impediría la reasignación del propio puntero al punto a otro Bar
, sino permitir la modificación de la Bar
que apunte a ... Sin embargo, no estoy seguro. Le agradecería que alguien que esté seguro pudiera confirmar esto o corregirme si me equivoco. ¡Gracias!
const
normalmente modifica lo que lo precede, por lo que T *const
es un const
puntero T
y T const*
es un puntero const
T
. Y es mejor evitar usar const
nada antes.
T *const
y T const *
es la misma que la diferencia entre const shared_ptr<T>
yshared_ptr<const T>
*
y->
confirmarlo.