Để bắt đầu, bạn có thể biết rằng constcó 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 pointerTuy 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 consttừ khóa. Cá nhân tôi thích đặt constbê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 constdữ 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?
constsau loại, ví dụ#define MAKE_CONST(T) T constthay vì#define MAKE_CONST(T) const TvậyMAKE_CONST(int *)sẽ mở rộng chính xácint * constthay vìconst int *.