Saya menulis metode pengakses untuk penunjuk bersama di C ++ yang berjalan seperti ini:
class Foo {
public:
return_type getBar() const {
return m_bar;
}
private:
boost::shared_ptr<Bar> m_bar;
}
Jadi untuk mendukung keteguhan getBar()
jenis kembalian haruslah boost::shared_ptr
yang mencegah modifikasi dari Bar
poin itu. Dugaan saya adalah shared_ptr<const Bar>
tipe yang ingin saya kembalikan untuk melakukan itu, sedangkan const shared_ptr<Bar>
akan mencegah penugasan ulang pointer itu sendiri untuk menunjuk ke yang berbeda Bar
tetapi memungkinkan modifikasi dari Bar
yang ditunjukkannya ... Namun, saya tidak yakin. Saya akan menghargai jika seseorang yang tahu pasti bisa mengkonfirmasi ini, atau mengoreksi saya jika saya salah. Terima kasih!
const
biasanya memodifikasi apa _precedes, jadi T *const
adalah const
pointer ke T
, dan T const*
adalah pointer ke const
T
. Dan yang terbaik adalah menghindari penggunaan const
tanpa apa pun sebelumnya.
T *const
dan T const *
sama dengan perbedaan antara const shared_ptr<T>
danshared_ptr<const T>
*
dan->
untuk memastikannya.