Đây là một ví dụ đơn giản để minh họa cho câu hỏi:
class A {};
class B
{
B(A& a) : a(a) {}
A& a;
};
class C
{
C() : b(a) {}
A a;
B b;
};
Vì vậy, B chịu trách nhiệm cập nhật một phần của C. Tôi đã chạy mã thông qua lint và nó đã nói về thành viên tham chiếu: lint # 1725 . Điều này nói về việc chăm sóc bản sao mặc định và bài tập đủ công bằng, nhưng bản sao và bài tập mặc định cũng không tốt với con trỏ, vì vậy có rất ít lợi thế ở đó.
Tôi luôn cố gắng sử dụng các tài liệu tham khảo nơi tôi có thể kể từ khi con trỏ trần giới thiệu không chắc chắn về người chịu trách nhiệm xóa con trỏ đó. Tôi thích nhúng các đối tượng theo giá trị nhưng nếu tôi cần một con trỏ, tôi sử dụng auto_ptr trong dữ liệu thành viên của lớp sở hữu con trỏ và truyền đối tượng xung quanh làm tham chiếu.
Tôi thường chỉ sử dụng một con trỏ trong dữ liệu thành viên khi con trỏ có thể là null hoặc có thể thay đổi. Có bất kỳ lý do nào khác để thích con trỏ hơn các tham chiếu cho các thành viên dữ liệu không?
Có đúng không khi nói rằng một đối tượng có chứa một tham chiếu không nên được gán, vì một tham chiếu không nên được thay đổi một khi được khởi tạo?