您的位置:首页 > 编程语言 > C语言/C++

C++ const限定符

2015-07-16 19:14 344 查看
基本特性

const对象一旦创建后其值就不能被修改,故而const对象必须进行初始化

可以用一个非const对象初始化一个const对象,也可以用一个const对象赋值给一个非const对象

默认状态下,const对象仅在文件内有效

当多个文件内出现了同名的const变量时,等同于在不同文件中定义了独立的变量

要在多个文件之间共享const对象,在变量的定义之前加上extern关键字

&类型与const

1、&(引用)类型与*(指针)类型不同,引用类型的声明、定义和初始化是一起的,初始化之后将不能再引用其他的变量
而指针类型的声明、定义、初始化以及之后的赋值都是没有限制的。

int a =1;


int b =2;




int&c = a;


int*p;


p =&a;


2、与const的搭配

int a =1;


int b =2;




/**< 因为引用在被初始化之后就不能在引用其它变量,所以没有int & const c = a这种写法 */


constint&c = a;


/**


* 不能给c赋值,对a无要求(a可以是const或者非const类型,a也可以重新赋值)


* 不能将c赋值给非const类型


*/




constint*p1 =&a;//等同于int const *p1 = &a;


/**


* 底层const


* 不能通过p1修改a的值,对a无要求


* 不能将p1赋值给非const类型


* p1可以指向其他变量


*/




int*const p2 =&a;


/**


* 顶层const


* 可以通过p2修改a的值


* p2不能指向其他变量


*/




const int * const p3 = &a;


如果const位于*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;
如果const位于*的右侧,const就是修饰指针本身,即指针本身是常量.

来自为知笔记(Wiz)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: