Я пишу метод доступа для общего указателя на 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что он указывает ... Однако я не уверен. Буду признателен, если кто-то, кто знает наверняка, подтвердит это или поправит меня, если я ошибся. Спасибо!
constобычно модифицирует , что _precedes, поэтому T *constявляется constуказателем T, и T const*является указателем const T. И лучше избегать использования, если ему constничего не предшествует.
T *constи T const *такая же, как и разница между const shared_ptr<T>иshared_ptr<const T>
*и->в этом убедиться.