1.extern可以置于变量或函数前,以表明变量或函数的定义在别的文件中,下面代码用到的这些变量或函数是外来的,不是本文件定义的,提示链接器遇到此变量和函数时在其他模块中解析/绑定此标识符。
2.const修饰的值是常量。这是不精确的,精确来说应该是只读的变量,其值在编译时不能被使用,因为编译器在编译时不知道其存储的内容。
const修饰的变量不能直接修改,但可以通过指针来改变变量里的值,只能在本文件中被读取,作用域是当前文件。
在C++里,const可修饰类,变量,函数。const成员函数,可以使用类中所有的成员,但不能被改变,声明和定义函数时都要加const,一旦将对象定义为常对象之后,
就只能调用类的const的成员。C++对const的处理少了读取内存的过程,优点是提高了程序的执行效率,缺点是不能反映内存的变化,一旦const变量被修改,c++就不能取得最新的值。
3.static
全局静态变量:作用范围局限于它的源文件,即只有本文件内的代码才可以访问它,变量名在其他文件内不可见
局部静态变量:局限于特定函数,但出作用域并不释放,在函数体内的静态变量的值也能够维持
静态函数:作用范围仅限于它的源文件,即只有本文件内才能够调用,函数名在其他文件不可见
存放位置:程序开始时,存放在全局数据区,结束时释放空间,默认初始化值是0,使用时可改变其值;
在C++中,当static修饰的成员变量属于类,可以共享(相当于全局变量),不属于具体的某个对象。
必须在类外初始化,例如 int Student::m_total = 0,其中int为类型,Student是类,m_total是static变量,0为初始化值。
访问方式,static成员变量既可以被对象访问,也可以被类来访问或可以被对象指针来访问。
static函数与普通成员函数的根本区别在于:普通函数有this指针,可访问所有成员,static函数没有this指针,只能访问static成员
static只能在声明函数时候加,不能再定义函数时候加(类中声明,类外初始化)