顶层const的示例

1.

顶层const作用于对象本身

const int ci = 42; //不能改变ci,const是顶层的

int i = ci; //正确:当拷贝ci时,忽略了它的顶层const

int *const p = &i; //const是顶层的,不能给p赋值

*p = 0; //正确:通过p改变对象的内容是允许的,现在i变成了0


2.

void fcn(const int i) {/*fcn能够读取i,但是不能向i写值*/}

void fcn(int i ){} //错误:重复定义了fcn(int)

3.

形参的初始化方式和变量的初始化方式是一样的。我们可以使用非常量初始化一个底层const对象,但是反过来不行;同时一个普通的引用必须用同类型的对象初始化。

int i = 42;

const int*cp = &i; //正确:但是cp不能改变i

const int &r = i; //正确:但是r不能改变i

const int &r2 = 42; //正确

int *p = cp; //错误:p的类型和cp的类型不匹配

int &r3 = r; //错误:r3的类型和r的类型不匹配

int &r4 = 42; //错误:不能用字面值初始化一个非常量引用

猜你喜欢

转载自blog.csdn.net/zhengliuguo/article/details/79422030