const/volatile/inline

C++const修饰的类的数据成员还有类的引用型数据成员必须在构造函数的初始化列表初始化,初始化列表的初始化顺序是严格按照定义类时声明类的数据成员的顺序进行初始化的。

const修饰类的成员函数时:
void   base
::funvoid) const

代表不可以用this指针修改类的数据成员。

 

volatile:变量存在的原因是每次编译器都要对我们的代码进行优化,但是当我们声明一个变量为const变量时,编译器认为这个变量是只读变量,会把它放入寄存器中,每次读取都从寄存器中读取。但是我们很有可能意外的修改了这个变量(比如我们进入该变量的地址,然后强行修改这个变量的大小),编译器却不知道这个变量已经改变了,会造成值不匹配的情况。但是用volatile修饰的变量会告诉编译器该值随时会变化,所以每次都要从内存中读取,就避免了刚才的情况。volatile变量经常用在多线程对共享资源的访问,避免了编译器的优化,造成多线程通信不匹配。

 

Inline c语言中有#define宏定义,但是它在预处理阶段,不支持类型检查和调试,所以在c++中出现了inline关键字,它写在函数定义的前面,它只是对编译器的一种建议,一般代码就3-5行,太长会造成代码膨胀。它是在编译阶段,所以支持类型检查和调试(release模式起作用,assertdebug模式起作用)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值