您可以将任何 cv 限定符(const
或volatile
)应用于任何类型,包括 cv 限定类型——但不能在同一个声明中。但是,就优先级而言,它们比任何运算符绑定得更牢固,并且可以应用于限定类型的两侧:
// 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
声明完全相同,一个常量T
。如果T
已经有 cv 限定符,这不会改变附加限定的含义。
现在,优先;你可以说“我想要一个指向常量的指针T
”:
const T (* tp);
通常写成
const T* tp;
因为const
绑定比*
无论如何都要强。在相同的模式中,您可以定义一个“恒定但指向可变T
”的变量:
T (* const tp) = 0; // must be initialised, because tp is immutable
通常写为
T* const tp = 0;
以同样的[]
方式应用下标运算符——与表达式中的优先级相同。