1.文件头部 #include <***>
表示把文件导入,类似于把文件插到头部的概念,Java中import表示把把导入,表面调用的类属于哪个包,相对于Java更为简单粗暴。
gcc查看函数需要导入那个头
man [空,2,3] 函数名称
2.namespace xx;
表示当前的文件在哪个命名空间类,类似与Java中的package xxx,与之同的地方是Java中package必须要要把对应的Java文件放在指定的位置。相对于Java该操作更为灵活
3.using namespace xx;
表示为文件中方方法使用的xx为某命令空间中的对象。类似于import。
4.#define xxx yy
表示预处理常量,xxx可在方法中使用,会对应到值yy,编译之后不会就不存在内存中了,可以简单理解为将文件中的xxx 全部提出成值yy。java中不具备该特性。
5.const type variable = value;
const类似于Java中的final
6.存储类auto
类似于Java中的Object,但是只能为基本的类型不能为对象。
7.存储类register
存储在寄存器中,Java中无对应,没有内存地址无法进行&运算
8.存储类extern
定义在全局,声明全局变量或者函数,列如
extern void write_extern();告诉编译器该函数或者变量在别的类中,编译时去别的文件中,编译时去别的文件中寻找,Java中无对应。
9.存储类thread_local
使用 thread_local 说明符声明的变量仅可在它在其上创建的线程上访问。 变量在创建线程时创建,并在销毁线程时销毁。
10.死循环
除了Java中常见的,C++中
Java中同样支持,可能Java面向的为应用层强调不能阻塞,所以该中死循环在Java中比较少见。for (; ; )
11.函数声明
实现了一个方法写在么main之后,则需要在main之前进行函数声明。自己实现的函数,在调用的地方之前实现,无须声明,否则需要声明,使用系统提供的函数,包含头文件即可使用。如果g++版本比较高时,调用main之后的函数可以不进行声明。
12.Lambda表达式
[capture](parameters)->return-type{body}
例如:
[](int x, int y){ return x < y ; }
如果不需要返回值
[capture](parameters){body}