Để bắt đầu, bạn có thể biết rằng const
có thể được sử dụng để làm cho dữ liệu của đối tượng hoặc con trỏ không thể sửa đổi hoặc cả hai.
const Object* obj; // can't change data
Object* const obj; // can't change pointer
const Object* const obj; // can't change data or pointer
Tuy nhiên, bạn cũng có thể sử dụng cú pháp:
Object const *obj; // same as const Object* obj;
Điều duy nhất có vẻ quan trọng là phía nào của dấu hoa thị bạn đặt const
từ khóa. Cá nhân tôi thích đặt const
bên trái của loại để chỉ định dữ liệu của nó không thể sửa đổi vì tôi thấy nó đọc tốt hơn trong suy nghĩ từ trái sang phải của tôi nhưng cú pháp nào đến trước?
Quan trọng hơn tại sao có hai cách chính xác để xác định const
dữ liệu và trong trường hợp nào bạn muốn hoặc cần cái này hơn cái kia nếu có?
Biên tập:
Vì vậy, có vẻ như đây là một quyết định tùy tiện khi tiêu chuẩn về cách trình biên dịch diễn giải mọi thứ đã được soạn thảo từ lâu trước khi tôi được sinh ra. Vì const
được áp dụng cho những gì ở bên trái của từ khóa (theo mặc định?) Tôi đoán rằng họ cho rằng không có hại gì khi thêm "phím tắt" để áp dụng từ khóa và nhập vòng loại theo những cách khác ít nhất là cho đến khi thời điểm khai báo thay đổi. phân tích cú pháp * hoặc & ...
Đây cũng là trường hợp của C?
const
sau loại, ví dụ#define MAKE_CONST(T) T const
thay vì#define MAKE_CONST(T) const T
vậyMAKE_CONST(int *)
sẽ mở rộng chính xácint * const
thay vìconst int *
.