C++学习记录<3>

C++ 存储类

C++中存储类的相关修饰符主要有auto、register、static、extern、mutable、thread_local等等

auto

aut关键字主要用于以下两种情况:

  1. 声明变量的时候根据初始化表达式自动推断出该变量的类型
  2. 声明函数时函数返回值的占位符
auto f=3.14;      //double
auto s("hello");  //const char*
auto z = new auto(9); // int*
auto x1 = 5, x2 = 5.0, x3='r';//错误,必须是初始化为同一类型

register

register 存储类主要是用于定义存储在寄存器中而不是存储在RAM中的局部变量。这意味着变量的最大尺寸就只能是一个寄存器的大小,且不能进行一元运算&,因为并没有内存位置。

register int dt; //dt被定义在寄存器上

定义在寄存器上是表示这些变量需要进行快速的访问,比如说计数器等等,此外定义了register不代表这个变量一定就在寄存器上,如果硬件上没有寄存器,那也无可奈何。

static

static修饰表示了编译器在程序的运行周期内一直都保持着局部变量的存在,不需要在离开这个变量的作用域时进行频繁的创建和销毁,此外使用static还可以再函数调用之间保持那个局部变量的值不变。
static也可以用来对全局变量进行修饰,当期修饰全局变量时,它的作用域被限制在声明定义它的文件内部
如果static修饰了类的成员变量时,则所有的类对象都会共享这一个变量的数值。

extern

extern提供了一个全局变量的引用,其对所有的程序文件都是可见的,当有多个文件都需要使用到一个变量时,就可以依靠extern来得到已经在其他文件中定义过的变量的引用,即:extern用来在另外一个文件中声明一个全局变量或者全局函数。

执行结果为:

$ ./write
Count is 5

mutable

mutable主要是用来将对象的成员变量替换为常量

thread_local

thread_local可以用来在其上创建的线程上进行访问,变量在创建线程时创建,在线程销毁时被销毁,在不同的线程中其被修饰的变量都拥有各自的副本!

C++ 运算符

运算符是一种告诉编译器执行特性数字或者逻辑操作的符号,主要有:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符以及杂项运算符。

算术运算符

在这里插入图片描述

关系运算符

在这里插入图片描述

逻辑运算符

在这里插入图片描述

位运算符

在这里插入图片描述

赋值运算符

在这里插入图片描述

杂项运算符

运算符优先级

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值