从本质的角度来说,声明与定义的区别在于前者完全不需要分配存储空间而后者需要。但是声明与定义的形式丰富,我们必须了解什么样形式的cpp句子是声明句、又是什么样的句子才能叫做定义句。。
一、先说内置类型的变量:int、char.... 对于内置类型变量来说:
1、所有以内置类型名开头+空格+变量名; 的句子都是定义句。如 int x; char c;
2、所有 extern+空格+内置类型名+空格+变量名; 形式的句子都是声明句。如 extern int x; extern char c;
3、所有 extern+空格+内置类型名+空格+变量名=常量; 形式的句子都是定义句。
如 extern int x=1; extern char c='k';
注意,第2与第3形式在的差别只在于有无赋值行为,而正是因为这点差别,才导致了第二条中提到的语句属于声明句、第三条中的语句属于定义句。因为从本质上看,有赋值行为就肯定要分配存储空间,而分配存储空间就说明这个是一个定义的行为了。
二、再说类类型