extern
作用
- 当extern与“c”在一起使用时,如:extern “C” void fun(int a,int b)则告诉编译器fun这个函数名时按着c的规则去翻译相应的函数名而不是c++的
- 当extern 不与“c”一起修饰变量或函数时,其作用就是声明函数或变量的作用范围。extern的作用范围为本模块或其他模块。
static
static修饰内置类型变量为静态变量
-
静态变量只初始化一次,未初始化的静态变量会默认初始化为0。
-
静态全局变量只在本文件可见,外部文件无法访问。
-
而静态局部变量只在定义的作用域内可见,但他们的生存周期都是整个程序运行时期。
static修饰函数为静态函数
static修饰的函数只允许在当前文件中使用,在其他文件中无法找到该函数的地址。不可以被其他文件引用,且不会与其他文件中的同名函数冲突。
static修饰成员变量为静态成员变量
- 所有对象(包括派生类的对象)共享同一份数据
- 在编译阶段分配内存
- 类内声明,类外初始化(不可使用构造函数初始化)