【单独编译】
1.简单说明了头文件的作用,方便引用避免重复定义声明,通常包括:
A.函数声明
B.宏定义
C.结构声明(不含有函数实现,谨声明)
D.类声明
E.模板
F.内联函数
2.include 的<>从默认路径找," "从当前目录找
3.宏隔离头文件,避免重复
#ifndef XXX
#define XXX
#endif
【存储的持续性,作用域,连接性】
1.体会不深,翻译有点蹩脚,感觉其实就是: 生命周期,作用范围(可见性),有效范围(可被访问范围)
2.全局变量和static都属于静态生命周期
int global = 0;// can be accessed any where
statice global = 0; // only available in the file
{
static para;//only availabe in the zone,would not be inited twice.
}
3.thread_local 变量对于线程,如同静态变量对于程序。--------------需要理解
4.volatile 是禁止编译器进行 放入 寄存器的优化
5.mutable 不收const 限制,需要实例
6.语言链接性:extern “C” void XX();
7.new运算符,定位new运算符,指明使用哪个变量空间的地址
new chaff
new (buffer) chaff
8.定位的new,不用delete;new [],delete[]
【名称空间】
——避免冲突:
namespace Jack {
...
}
原则上,名称空间可以位于外部,或另一个命令空间中,其内容可以被访问
Jack::A = 1;
——using声明 using编译指令
声明只针对一个名称内容
编译指令则包含内容都可用 using namespace XX;
编译指令是如果和局部变量冲突,会进行作用于内的隐藏,而声明则直接报冲突;
——别名:namespace A ; namespace B=A;
——匿名名称空间
——不要头文件使用,优先局部而非全局