私は C++ で共有ポインターのアクセサー メソッドを次のように書いています。
class Foo {
public:
return_type getBar() const {
return m_bar;
}
private:
boost::shared_ptr<Bar> m_bar;
}
getBar()
したがって、戻り値の型のconst性をサポートするには、それが指すものboost::shared_ptr
の変更を防ぐ必要があります。Bar
推測は、shared_ptr<const Bar>
それを実行するために返したい型ですが、 は、const shared_ptr<Bar>
ポインター自体が別のものを指すように再割り当てされることを防ぎながらBar
、それが指すものの変更を許可しますBar
... ただし、確信はありません。確実に知っている人がこれを確認するか、私が間違っていた場合は訂正していただければ幸いです。ありがとうございます!
ベストアンサー1
おっしゃる通りです。は(または、同等に)shared_ptr<const T> p;
に類似しています。つまり、指し示されているオブジェクトはであるのに対し、 は に類似しており、つまりは であることを意味します。まとめると、次のようになります。const T * p;
T const * p;
const
const shared_ptr<T> p;
T* const p;
p
const
shared_ptr<T> p; ---> T * p; : nothing is const
const shared_ptr<T> p; ---> T * const p; : p is const
shared_ptr<const T> p; ---> const T * p; <=> T const * p; : *p is const
const shared_ptr<const T> p; ---> const T * const p; <=> T const * const p; : p and *p are const.
weak_ptr
およびについても同様ですunique_ptr
。