存储说明符或cv-限定符

存储说明符

c++有关提供存储信息的关键字有如下几个:

  • auto(在c++11中不再是说明符,用于自动类型判断)
  • register(寄存器变量,c++11显示地指出自动变量)
  • static(静态持续变量)
  • extern(引用外部变量声明)
  • thread_local(c++11新增,指出变量的持续性和线程的持续性相同。关系类似于静态持续变量之于整个程序。)
  • mutable(即使结构或类中的变量为const,其某个成员也可以被修改)

限定符

cv-限定符:

  • const
  • volatile

1.再谈const

在c++(而不是c语言中)中,const 限定符对默认的存储类型稍有影响。在默认情况下,全局变量具有外部链接性,而使用了const 进行修饰的全局变量的链接性改为内部链接性,即只能在本文件中使用。在这种情况下,如果希望此常量的链接性是外部的,则必须在使用该常量的其他文件中使用 extern 来进行引用声明。

2.关键字:volatile

关键字volatile表明,即使程序代码没有对内存单元进行修改,其值也会发生变化。该关键字的作用是为了改善编译器的优化。例如,编译器发现,程序在几条语句中使用了同一个变量的值两次,但是中间代码没有对该变量的值进行过修改,如果此时变量没有声明成 volatile 类型,那么编译器在第二次使用该变量的值时,将进行优化,直接从存储该值的缓冲寄存器取值,但是若声明为 volatile 类型,那么第二次使用该值时,程序将和第一次使用该变量一样,也从该变量地址处取值,此时相当于告诉编译器不要进行优化。

3.关键字:mutable

关键字mutable表明,即使结构或类中的变量为const,其某个成员也可以被修改。示例如下:

struct data
{
    char name[20];
    mutable int grade;
}
....
const data one={"david",90};
one.name="mary";  //不合法的
one.grade++;       //合法的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值