Я пишу метод доступа для общего указателя на 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>
*
и->
в этом убедиться.