一。数据类型相关
1.bool,true,false
bool取值为真假。true和false是具有布尔类型的字面量,是右值,表示真和假。
2.char,wchar_t
表示字符型和宽字符型的整数类型,一般只用于表示字符。char表示单字节字符,wchar_t表示多字节字符。
3.sign 和 unsigned
表示有符号和无符号,可以修饰char类型,也可以单独作为类型,相当于signed int 和 unsigned int
4.int,short,long,double,float
5.explicit
避免自定义类型隐式转换为类类型
6.auto
根据初始值来自己判断变量的数据类型。但是不是每个编译器都支持auto
二。语句相关
1.switch,case,default
分支语句,根据switch来跳转case标号或者default标记的分支上。
2.do,for,while
循环语句
3.if,else
条件语句,if表示条件,else表示否定分支
4.break,cotinue,goto
break用来跳出for while switch语句
continue用来跳到一个循环的起始位置
goto用于无条件跳转到函数内的标号的地方(风险较大)
三。定义,初始化相关
1.const , volatile
语法类似,修饰变量或者函数参数声明,也可以限制非静态成员函数。
const表示只读类型,指定类型安全性,保证类型不被意外修改。
volatile指定修饰的对象类型的读操作的副作用,因此读取不能被随便优化合并,适合映射i/o寄存器
使用于多线程中被几个任务共享的变量。
读取一个变量的时候,为了提高存取速度,编译器优化时通常把变量读取到一个寄存器中,以后再取变量值时,就直接从寄存器中取值。
优化器在用volatile变量的时候每次都小心的重新读取这个变量的值,而不是使用保存到寄存器里的备份。
2.enum枚举类型
3.export
实现模板函数的外部调用。对于模板类型,在头文件中声明模板类和模板函数。
在代码文件中,使用关键字export来定义具体的模板类对象和模板函数。
在其他用户的代码中,包含声名头文件后可以使用这些对象和函数。
4.extern
(1)引用变量的声明
a文件要使用b文件的int v变量,使用extern int v就可以引用变量v 。其中v的链接属性一定是外链接的,v本身是能够被引用的。所以被其他模块以extern引用到的变量一般是全局变量。extern int v可以放在a文件的任意地方。
(2)修饰函数的声明
函数名是指向函数二进制开头处的指针,和引用变量名是一样的。
extern可以加速编译的过程。
5.public , proteced, private
权限修饰符。public是公有的,访问不受限制
protected 是被保护的,只能在本类中和友元中访问
private是私有的,只能在本类中,派生类和友元中访问
6.template
声明一个模板,函数模板,模板类
7.static
修饰变量,修饰函数和类中的成员函数。
具有静态生存期的变量,只在函数第一次调用时候进行初始化,在没有显示初始化的情况下,系统初始化为0
8.struct,class,union
union表示几个变量共用同一个内存空间,在不同的事件保存不同的数据类型和不同长度的变量
union的大小由最大的成员大小决定,对某个成员赋值会改变其他成员的值
9.virtual
声明虚基类,虚函数。
虚函数=0的时候是纯虚函数,纯虚函数所在的类称为抽象类。
四。操作系统相关
1.catch, throw, try
try指定try块的起始,throw抛出异常,catch捕获异常
2.new, delete
操作符,可以被重载。
new:向内存申请一段新的空间,失败会抛出异常。
先调用 重载new函数,在函数里面调用malloc函数(失败会返回空)分配空间,再调用构造函数
delete:不仅清理资源,还会释放空间。
先调用析构函数,再调用 重载delete函数,最后在dellete函数里面调用free函数(只是清理资源并不是释放空间)。
3.friend 友元。
4.inline 内联函数。编译的时候可以将所调用的函数代码直接嵌入到主调函数中
5.operator
和操作符连用,指定一个重载了的操作符函数
6.register
提示编译器尽可能的把变量存入到cpu内部的寄存器中。
7.typename
告诉编译器把一个特殊的名字解释为一个类型
六。函数和返回值相关
1.void 指函数无返回值或者无参数
2.return
(1)带回一个参数(计算结果)
(2)不需要返回计算结果,就返回一个状态码来表示函数执行的顺利与否。-1或者0是最常用的。
3.size of 返回类型具有的大小
字符串包含/0的大小
七。其他
this
每个类成员函数都隐含了一个this指针,用来指向类本身。一般省略,在 赋值运算符重载的时候要显示使用。静态成员函数没有this指针。
八。0, NULL 和nullptr
c++中引入了nullptr来区分0和NULL。一般空指针使用nullptr