Piszę metodę akcesora dla współdzielonego wskaźnika w C ++, która wygląda mniej więcej tak:
class Foo {
public:
return_type getBar() const {
return m_bar;
}
private:
boost::shared_ptr<Bar> m_bar;
}
Tak więc, aby obsługiwać stałą getBar()
zwracanego typu, powinno być a, boost::shared_ptr
które zapobiega modyfikacji wskazanego przez Bar
niego. Moje przypuszczenie jest to, że shared_ptr<const Bar>
jest to rodzaj chcę wrócić do tego, natomiast const shared_ptr<Bar>
uniemożliwia zmiany przeznaczenia wskaźnik się do punktu do innego Bar
, ale umożliwiają modyfikację Bar
że wskazuje ... Jednak nie jestem pewien. Byłbym wdzięczny, gdyby ktoś, kto wie na pewno, mógł to potwierdzić lub poprawić mnie, jeśli źle zrozumiałem. Dzięki!
const
zazwyczaj modyfikuje co _precedes, więc T *const
jest const
wskaźnik T
i T const*
jest wskaźnikiem const
T
. I najlepiej unikać używania, const
gdy nic go nie poprzedza.
T *const
i T const *
jest taka sama jak różnica między const shared_ptr<T>
ishared_ptr<const T>
*
i->
to potwierdzić.