Tôi biết sự khác biệt giữa việc truyền theo giá trị, tham chiếu hoặc con trỏ trong trường hợp chung. Tuy nhiên, câu hỏi của tôi là về trường hợp đặc biệt về một container với cấu trúc đơn giản.Việc chuyển vùng chứa theo giá trị hoặc tham chiếu
Giả sử trường hợp này:
class image{
image()=default;
image(image const&)=default;
~image()=default;
int w;
int h;
uchar* data;
}
Khi đi qua một đối tượng của lớp này những gì sao chép chỉ hai số nguyên là gì và con trỏ không phải là toàn bộ dữ liệu. Trong trường hợp này là có mục đích để vượt qua nó bằng cách tham khảo? Hoặc là có một mục đích để không vượt qua nó bằng cách tham khảo?
Điều kích hoạt câu hỏi này là tôi đã đọc rằng iterators
trong C++ được thiết kế để có ánh sáng và được truyền theo giá trị. Vì vậy, tôi nghĩ rằng khái niệm này có thể được áp dụng cho các lớp đại diện cho một container để dữ liệu thực tế không có dữ liệu.
Dữ liệu 'uchar * 'là gì? Tôi có nghĩa là nó là một nguồn lực để sao chép sâu và làm sạch? – Jarod42
khi sao chép (không nhân bản) chỉ con trỏ sẽ được sao chép và cả hai đối tượng sẽ chia sẻ cùng một dữ liệu thực tế –
liên quan: http://stackoverflow.com/questions/4172722/what-is-the-rule-of-three –