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