`const shared_ptr の違い ` と `shared_ptr `? 質問する

`const shared_ptr の違い ` と `shared_ptr `? 質問する

私は 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;constconst shared_ptr<T> p;T* const p;pconst

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

おすすめ記事