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_ptrngăn cản việc sửa đổi Barnó 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 Barnhưng cho phép sửa đổi điểm Barmà 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!
constthường Sửa gì _precedes nó, vì vậy T *constlà một constcon 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 constkhông có gì trước nó.
T *constvà 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.