C++存储说明符与限定符(c++primer:9.2.7,P317)

存储说明符的种类:

  • auto
  • register
  • static
  • extern
  • thread_local
  • mutable

auto

auto的便利性在于STL库中一些变量的声明,下面这个例子itvaitvb的声明方式立显auto的便利性。

//声明一个vector<vector<int>>的容器
	std::vector<vector<int>> v;
//声明一个v的迭代器指向v.begin();
	auto itva = v.begin();
	std::vector<vector<int>>::iterator itvb = v.begin();

register

这个存储说明符在C++11中用法已经被废了,还留着是为了兼容以前的程序,可以无视它。
以前是为了告诉编译器尽量将其后面变量放入寄存器中,加快程序的运行速度;注意是尽量,不一定就真的会被放入寄存器。

static

  • 修饰函数,使函数为内部链接性;
  • 修饰代码块之外的变量,使全局变量为内部链接性;
  • 修饰代码块之内的变量,使变量为静态变量;
  • 修饰类/结构体?(暂时还没复习到,先空着)

extern

  • 修饰普通变量:为声明,声明此变量是全局变量(前面必须有变量的定义);
  • 修饰const:将const的内部链接性转变为外部链接性;
  • extern “C”:表示用C的方法编译xxx函数;
//其余文件有int a 
	extern int a;
	extern static int b;
	extern "C" void func(int var);

先空着吧,有空整理

thread_local

空着

mutable

若类/结构体被const修饰,其中被mutable修饰的变量仍然可以被修改;

补充一个volatile

告诉编译器,被volatile修饰的变量是易变的,不要对其取用方式进行优化(只从变量的存放地取变量值)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值