Mã sau hoạt động như thế nào trong C++? Nó có hợp lý không?Khởi tạo chữ cho tham chiếu const
const int &ref = 9;
const int &another_ref = ref + 6;
Tại sao C++ cho phép khởi tạo theo nghĩa đen cho tham chiếu const khi cùng không được phép tham chiếu không phải const? Ví dụ:
const int days_of_week = 7;
int &dof = days_of_week; //error: non const reference to a const object
Điều này có thể được giải thích bằng cách sử dụng tham chiếu không tham chiếu để thay đổi giá trị của biến mà nó đang đề cập đến. Do đó, C++ không cho phép tham chiếu không const đến một biến const.
Đây có phải là giải thích có thể không? C++ không cho phép:
int &ref = 7;
Bởi vì đó không phải là hợp lý, nhưng:
const int &ref = 7;
là gần như tương đương với:
const int val = 7;
khởi Vì vậy, theo nghĩa đen được phép cho các biến const.
P .: Tôi hiện đang học LDPman's C++ Primer.
+1. Nhưng tôi nghĩ ví dụ thứ hai của bạn sẽ được chuyển thành { chuỗi __internal_unique_name ("foobar"); f (__ internal_unique_name); } – mmmmmmmm
@rstevens: không quan trọng: chuyển đổi không được rõ ràng, trong trường hợp này chúng giống nhau. –