[C++] 对象定义的概念
对象定义有两种形式
type_specifier object_name;
type_specifier object_name = initializer;
举例而言就是
int a;
int a = 1;
基本上变量的声明和定义是一起的,这个过程就会引起内存分配。上面说的两种形式的区别在于是否初始化。
但是有另一种情况:
extern int a;
这种情况是只声明不定义的,它(暂时)不会分配内存,因为它是来自外部的变量,也应该是在外部定义。
但是但是,如果给这个变量初始化了,它就会分配存储区了。不但如此,后续变量(相同作用域)还不能跟它重名:
extern const double pi = 3.1415;//定义
const double pi = 3.1415;//错误:重复定义pi;
extern也可以在函数声明中指定:
extern void putValues( int );
这样,隐式属性”在其他地方定义“就变为了显示。也就是不能直接写完就定义了(实际上本身也是别的文件里定义拿来用的)。