什么叫定义,如果你声明了一个变量而不初始化,那叫声明,如果你初始化,那就叫定义了。C++规定你只能定义一次,否则那就是多重定义了。
为此,C++有两种声明方式可供选择。
1、其实就是定义,这一行为会自动给这个变量分配内存空间并填值;
2、另一个就是声明了,这并不分配内存空间。
这里不得不提一个引用型声明,就是加上extern的声明,如果你想定义的话,那只能在一个文件中进行定义,这里所说的是带上extern关键字。如果你想在别的文件中使用的话,也一定要加上extern,这代表它是从别的文件中引用来的。
这里面涉及到了一个情况,那就是在一个源文件中你已经用extern关键字引入了一个外部变量,但是你在该源文件的函数里面又用extern关键字引入了该变量,这个就叫做外部变量的再声明,那么这有什么用呢?其实,这没啥用,因为你改变的都是那个变量,如果你用解引用操作符来查看的话,它们的地址都是一样的。
当然,如果你在函数内部再定义一个同名变量的话,那么这个同名变量其实是另一个变量,不信你就取地址来查看一下。
过度使用全局变量是很不好的习惯,因为这不符合封装特性。