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_ptrktóre zapobiega modyfikacji wskazanego przez Barniego. 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!
constzazwyczaj modyfikuje co _precedes, więc T *constjest constwskaźnik Ti T const*jest wskaźnikiem const T. I najlepiej unikać używania, constgdy nic go nie poprzedza.
T *consti T const *jest taka sama jak różnica między const shared_ptr<T>ishared_ptr<const T>
*i->to potwierdzić.