1.数据类型
bool:布尔类型,属于基本类型的整数类型,取值为真和假
true:具有布尔类型的字面量,表示真
false:具有布尔类型的字面量,表示假
char:表示字符型,定义了字节的大小,char表示单字节字符
wchar_t:表示宽字符型,表示多字节字符
int:整型数
double:双精度浮点数,精度不小于float
float:浮点数
short:
long:long double表示精度不小于double的浮点数
signed:前缀修饰整数类型,有符号,不可修饰wchar_t,char16_t,char32_t
unsigned:前缀修饰整数类型,无符号
explicit:避免自定义类型隐式转换成类类型
auto:根据初始值自动推断变量的数据类型,不是每个编译器都支持auto
2.语句相关
switch:分支语句的起始
case:case标号
default:默认分支
do,for,while:循环语句的组成部分
if ,else:条件语句的组成;if 表示条件,之后else的表示否定分支
break:跳出for,while循环或switch语句
continue:调到一个循环的起始位置
goto:用于无条件跳转到函数内的标号处,一般不建议了,风险大
3.定义,初始化相关
const:类型修饰符,用于变量或函数参数声明,表示只读类型(指定类型安全性,保护对象不被意外修改)
volatile:指定被修饰的对象类型的读操作是副作用(读取不能随便优化合并,适合映射I/O寄存器)a 当读取一个变量时,为提高存取速度,编译器优化时有时会先把变量读取到一个寄存器中,以后再取变量值时,就直接从寄存器中取值 b 优化器在用到volatile变量时必须每次都小心地重新读取这个变量的值,而不是使用保存到寄存器的备份 c volatile适用于多线程应用中呗几个任务共享的变量
enum:构成枚举类型名的关键字
export:使用该关键字可实现模板函数的外部调用。对模板类型,可以在头文件中声明模板类和模板函数。在代码文件中,使用关键字export来定义具体的模板类对象和模板函数,然后再其他用户代码为念中,包含声明头为念后,就可以使用这些对象和函数
extern:当出现extern "C"时,表示extern "C"之后的代码按照c语言的规则去编译;当extern修饰变量或函数时,表示其具有外部链接属性,即其既可以再本模块中使用也可以在其他模块中使用
public:权限修饰符。public表示公有的,访问不受限制;
protected:保护的,只能在本类和友元中访问;
private:私有的,只能在本类,派生类和友元中访问;
template:声明一个模板,模板函数,模板类,模板的特化;
static:可修饰变量(静态全局变量,静态局部变量),也可以修饰函数和类中的成员函数。static修饰的变量的周期为整个函数的声明周期。具有静态生存期的变量,只有在函数第一次调用时,进行初始化,在没有显示初始化的情况下,系统把他们初始化为0;
class:一般的类声明
struct:用于类型声明,struct在c++中是特殊的类类型,声明中仅默认隐式的成员和基类访问限定与class不同(struct是public,class是private)。
union:是联合体类型,满足特定条件类型
POD(Plain Old Data)plain普通类型old 与c语言兼容
POD struct或POD union可以和C语言中的 struct和union兼容
mutable:突破const的限制,mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。
virtual:声明虚基类,虚函数。虚函数=0时,则为纯虚函数,纯虚函数所在的类称为抽象类;
4.系统操作相关
catch,throw, try:用于异常处理;try指定try块的起始,try块后的catch可以捕获异常,异常由throw抛出。throw在函数中还表示动态异常规范
new,delete:属于操作符,可以被重载;new表示向内存申请一段新的空间,申请失败会抛出异常。new会调用operator new函数,再在operator new函数里调用malloc函数分配空间,然后在调构造函数。delete不仅会清理资源,还会释放空间。delete会调用析构函数,其次调用operator delete函数,最后在operator delete函数里面调用free函数。malloc申请内存失败后会返回空。free只是清理了资源,没有释放空间。
friend:友元,使其不受访问权限控制的限制。例如,在1个类中,私有变量外部是不能直接访问的,假如另外1个类或函数要访问本类的1个私有变量时,可以吧这个函数或类声明为本类的友元函数或友元类,这样他们就可以直接访问本类的私有变量。
inline:内联函数,在编译时将所调用的函数代码直接嵌入到主调函数中。各个编译器的实现方式可能不同。
operator:和操作符连用,指定一个重载了的操作符函数。比如,operator+
register:提示编译器尽可能的吧变量存入到cpu内部寄存器中。‘
typename:typename关键字告诉编译器把一个特殊的名字解释为一个类型。
5.命名相关
using:(1)在当前文件引入命名空间,using namespace std;(2)在子类中使用,using声明引入基类成员名称。
namespace:c++标准程序库中的所有标识符都被定义于一个名为std的namespace中,命名空间除了系统定义的名字空间之外,还可以自己定义,定义命名空间用关键字“namespace”,使用命名空间时用符号“::”指定。
typedef:为现有数据类型创建一个新的名字,便于程序的阅读和编写。
6.函数和返回值相关
void:"空"类型,指定函数无返回值或无参数
return:表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值。
sizeof:返回类型名或表达式具有的类型对应的大小’
typeid:操作符,返回类型为标准库中类型的引用
7.其他
this:每个类成员函数都隐含了一个this指针,用来指向类本身。this指针一般可以省略,但在赋值运算符重载的时候要显示使用。静态成员函数没有this指针。
asm:_asm是一个语句的分隔符,不能单独出现,必须接汇编指令,一组被大括号包含的指令或一对空括号。
_asm
{
mov al,2
mov dx,0xD007
out al,dx
}
也可以在每个汇编指令前加_asm
*_cast:const_cast,dynamic_cast,reinterpret_cast,static_cast
const_cast:删除const变量的属性,方便赋值;
dynamic_cast:用于将一个父类对象的指针转换为子类对象的指针或引用;
reinterpret_cast:将一种类型转换为另一种不同的类型;
static_cast:用于静态转换,任何转换都可可以用它,但他不能用于两个不相关的类型转换。