Bạn có thể áp dụng bất kỳ loại vòng loại cv nào (const
hoặc volatile
) cho bất kỳ loại nào, bao gồm các loại đủ điều kiện cv - chưa có trong tuyên bố giống nhau. Tuy nhiên, họ ràng buộc mạnh mẽ hơn bất kỳ nhà điều hành, về ưu tiên và có thể được áp dụng trên cả hai mặt của các loại trình độ:
// Let T by any type:
T const tr;
const T tl;
const T const tlr; // only in C
const const const const const T t5; // only in C
typedef const T CT;
CT const tcc; // fine, although CT was already const
khai báo giống hệt nhau, một hằng số T
. Nếu T
đã có vòng loại cv, điều này sẽ không thay đổi ý nghĩa của chứng chỉ bổ sung.
Bây giờ, để được ưu tiên; Bạn có thể nói: "Tôi muốn có một con trỏ đến một hằng số T
":
const T (* tp);
mà thường được viết dưới dạng
const T* tp;
vì const
liên kết mạnh hơn *
anyway.Trong cùng một khuôn mẫu, bạn có thể định nghĩa một biến đó là "liên tục nhưng chỉ ở một mutable T
":
T (* const tp) = 0; // must be initialised, because tp is immutable
mà thường được viết như
T* const tp = 0;
Trong bối cảnh đó các nhà điều hành subscript []
là được áp dụng - với cùng mức độ ưu tiên như trong các biểu thức.
Cảm ơn bạn đã trả lời nhanh chóng. Tôi sẽ đánh dấu chính xác vào ngày mai. – Jim