C++基础知识复习 const关键字

没事翻了下C++ primer,开卷有益吧,加深下印象,留个复习记录如下:

 

1、const 指针与指向 const对象的指针

const int * p;/*指向const int 的指针*/

int * const p;/*指向int的const指针*/

记忆方法:从右往左读,*读作is a pointer to。

 

2、const形参

在非引用或非指针传值时,const修饰符无意义,因为复制传值的时候,不可能改变实参的值。

const int &与int &不同,此处不同可作为区分函数重载的标识。

没有int const &(这点与指针不同,指针分常指针与指向常变量的指针等),引用初始化的时候就已经赋值,不能像指针一样改变指向的对象,引用只是一个别名。

const int *与int * const 参考第一点。

 

3、const函数。

const函数不能改变类成员变量的值,除非该成员变量被mutable修饰,这是因为const 函数所传递的指针是指向const 对象的指针。

 

4、const对象

const对象在初始化之后就不能修改类对象的成员,const对象在初始化之后只能调用const成员函数。

 

5、const成员函数

const成员函数不能修改对象中的任何成员(静态成员除外),但是此函数若改变成员变量指针指向的对象的值,编译器无法发觉并提出警告,这点要特别注意。(编译器仅仅检测类中对象是否被修改,而没有检测指针指向的对象,改变成员指针指向对象的值这点不符合const成员函数的定义,但编译器无法发觉。) 

 

6、

指向const的指针不能改变非const对象的值(编译器会报错),指向const的指针可以理解为“自以为指向const对象的指针”,不能通过指向const对象的指针来修改对象,但是通过其他途径来修改对象编译器并不会报错。

 

7、全局const对象与const对象的初始化

const必须在定义的时候初始化,之后不能修改。与其他变量不同,除非特别说明,在全局作用域声明的const变量是定义该对象的文件的局部变量——此变量只存在于那个文件中,不能被其他文件访问。

若如下声明const变量,就可以在整个程序中访问const对象:

//文件1

extern const int bufSize = 512;//定义并初始化

 

//文件2

extern const int bufSize;//用文件1中的bufSize变量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值