[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 );

这样,隐式属性”在其他地方定义“就变为了显示。也就是不能直接写完就定义了(实际上本身也是别的文件里定义拿来用的)。

posted @ 2018-08-04 15:28  zengzhaocheng  阅读(246)  评论(0编辑  收藏  举报