Tôi đang viết một phương thức truy cập cho một con trỏ dùng chung trong C ++ diễn ra như sau:
class Foo {
public:
return_type getBar() const {
return m_bar;
}
private:
boost::shared_ptr<Bar> m_bar;
}
Vì vậy, để hỗ trợ const-ness của getBar()
kiểu trả về phải là một boost::shared_ptr
ngăn cản việc sửa đổi Bar
nó trỏ tới. Tôi đoán đó shared_ptr<const Bar>
là kiểu mà tôi muốn quay lại để làm điều đó, ngược lại const shared_ptr<Bar>
sẽ ngăn việc gán lại chính con trỏ để trỏ đến một điểm khác Bar
nhưng cho phép sửa đổi điểm Bar
mà nó trỏ tới ... Tuy nhiên, tôi không chắc. Tôi sẽ đánh giá cao nếu ai đó biết chắc chắn có thể xác nhận điều này hoặc sửa cho tôi nếu tôi sai. Cảm ơn!
const
thường Sửa gì _precedes nó, vì vậy T *const
là một const
con trỏ tới T
, và T const*
là một con trỏ đến const
T
. Và tốt nhất là tránh sử dụng const
không có gì trước nó.
T *const
và T const *
cũng giống như sự khác biệt giữa const shared_ptr<T>
vàshared_ptr<const T>
*
và->
xác nhận điều này.