C++基础知识

关键字

const

  • 修饰变量:该变量不能修改
  • 修饰引用:不能通过该引用修改其引用的对象
  • 修饰指针:
    • 指向常量的指针:const TYPE* pointer,不能通过该pointer修改其指向的对象;
    • 指针常量:TYPE* const pointer,不能修改该pointer本身;
  • 修饰成员函数:TYPE func() const,该函数不能修改类内的任何成员变量

static

修改变量的存储区域和生命周期,使变量存储在静态区

  • 修饰普通变量、普通函数:约束作用范围在本文件内的全局,不能被其它文件访问(加了extern关键字也不行);在修饰变量的时候,只执行初始化一次;
  • 修饰类成员:静态成员属于类,无需实例化对象便可访问ClassName::StaticMember,被所有类对象共用
    • 静态类成员变量:使用前必须显式初始化;
    • 静态类成员函数:只能访问静态成员、而不能访问非静态成员。

https://www.runoob.com/w3cnote/cpp-static-usage.html

inline

内联函数,建议编译器直接把内联函数中的内容复制到了调用该函数的地方,以减少函数调用开销

  • 不能包含循环、递归、switch 等复杂操作;内联只是对编译器的建议,是否内联取决于编译器
  • 定义在类中的函数,除了虚函数,都会自动隐式地当成内联函数。但这不代表虚函数无法内联

volatile

表明所修饰变量不稳定、易变,禁止编译器优化该变量(每次必须从内存中读取该变量的值);一般情况下,如果两次读取变量之间,没有修改该变量的值,第二次读取的时候是直接使用上一次读到的内容(从cpu寄存器中读取、而非内存中读取);但是在多线程中,两次读取之间,可能会被其它线程修改,但读取的还是旧内容。

https://www.runoob.com/w3cnote/c-volatile-keyword.html

thread_local

线程局部存储,每个线程都有一个副本,相互不影响,在线程内只会被初始化一次、生命周期绑定到线程的生命周期(类似于static)

https://www.jianshu.com/p/8df45004bbcb

struct、class

默认的访问和继承权限不同:struct默认都是public的,class默认都是private的

union

联合体,其所有成员共享内存空间(大小等于各成员空间大小的最大值)

联合体里面的东西共享内存,所以静态、引用都不能用,因为它们不可能共享内存;不允许存放带有构造函数、析构函数、复制拷贝操作符等的类,因为共享内存、编译器无法保证这些对象不被破坏,也无法保证离开时调用析构函数

https://blog.csdn.net/lincyang/article/details/6176642

enum

枚举变量的值只能取枚举常量表中所列的值,就是整型数的一个子集;枚举变量占用内存的大小与整型数相同。

enum color_set1 {RED, BLUE, WHITE, BLACK} color1;
//color1=1非法,不能直接将常量赋给枚举变量;color1=RED;

enum color_set2 { GREEN, RED, YELLOW, WHITE} color3;

//color1=color3非法,不同类型的枚举变量之间不能相互赋值

https://www.runoob.com/w3cnote/cpp-enum-intro.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值