声明、定义区别(变量、函数、类)

相同点

对编译器来说都是符号,声明就会在符合表中留下一列等待填充的空白,即不完整的等待填充一行,而定义就是符合表中完整的一行。在编译cpp成obj时,这里面变量、函数和类三种东西看成并列地位,即都是一个名字,符号表中的一列(可以先简单认为obj的符号表中只有两列即符号名字和地址)

不同点

在使用上这三种符号的声明和定义有所区分:【定义类和变量时原子性,定义类不是原子性,还要用这个类去定义别的东西】
具体来讲:

  1. 对于变量:由于变量的定义和声明是同一语句,如 int a; 所以规定声明必须使用extern关键字以区别是声明而不是定义。
  2. 对于函数:由于定义有个大括号包住的函数体,而声明没有大括号的函数体,所以它的声明和定义不需要多余的如extern关键字,即大括号的是定义,不带的是声明。
  3. 对于类:在形式上和函数一样,名字上带大括号的是定义(定义一个类型),不带大括号的是声明。但他有特殊之处,即不能先声明类(即不带大括号),然后定义这个声明的类的实例,再在后面或其他cpp文件中定义具体的类。变量和函数是可以先声明然后在链接的时候从其他文件中找的。

猜你喜欢

转载自blog.csdn.net/u014571489/article/details/84526237