1、为了让多个文件访问相同的变量,C++中区分了声明与定义。
声明用于向程序表明变量的类型和名字,使用extern关键字,不分配存储空间。
非const变量默认为extern
//f1.cpp
int a = 3;
//f2.cpp
extern int a;
++a;
在f1.cpp中a为非const变量,和extern int a = 3 等价。
当变量为const类型时,需要添加extern。
//f1.cpp
extern const int a = 3;
//f2.cpp
extern const int a;
2、在类中,类的定义数据成员与变量的定义存在非常重要的区别。不能将类成员的初始话作为其定义的一部分。定义数据成员时只能指定数据成员的名字和类型。数据成员是通过构造函数初始化的。
3、在设计自己的头文件时,头文件只用于声明而不是定义。如果出现定义,在使用时会出现重定义的错误。一些const对象的可以在头文件中定义(常量表达式):
const int a=3;//ok
extern const int a=3;//error
当然const对象也可以和替他类型一样,在头文件中声明,在源文件中定义。
4、const对象必须初始化