C++声明和定义

来源:互联网 发布:get it beauty2016 编辑:程序博客网 时间:2024/06/04 01:31

C++程序通常由许多文件组成,为了让多个文件访问相同的变量,C++区分了声明和定义。

变量的定义用于为变量分配存储空间,还可以为变量指定初始值。在一个程序中,变量有且仅有一个定义。

声明用于向程序表明变量的类型和名字。定义也是声明:当定义变量时我们声明了它的类型和名字。可以通过extern关键字声明变量而不定义它。不定义变量的声明包括对象名、对象类型和对象类型前的关键字extern:

extern int i;  // declares butdoes not define i

int i;  //  declares and defines i

extern声明不是定义,也不分配存储空间。事实上,它只是说明变量在程序的其他地方。程序中变量可以声明多次,但只能定义一次。

如果声明有初始化式,那么声明可以被当作是定义,即使声明标记为extern:

extern  double pi=3.14;//definition

double pi; //error, redefinition of pi

任何在多个文件中使用的变量都需要有与定义分离的声明。在这种情况下,一个文件含有变量的定义,使用该变量的其他文件包含该变量的声明。

 

具体使用方法:

//file1.cpp

#include <iostream>

using namespace std;

extern int i;  //这是一个声明,告诉编译器变量i的定义有可能是在其他源文件中,即使本文件中没有i的定义,你也不要报错。

void main()

{

   extern int i;  //同样是对i的声明,作用与上面的声明完全一样,说明声明可以存在多个,实际上这两个声明只要任意一个就可以了。但是两个声明语句如果一个都没有,编译器就会认为变量i没有定义,会报错。

 

   i=0;  //赋值语句,给变量i一个新值,变量赋值前必须要已经定义了,如果不存在file2文件中的定义语句,虽然不会出现编译错误,但是链接会有错。

   cout<<i;

}

 

//file2.cpp

int i;//首先是一个定义,而且是一个没有初始化的定义(不过实际上全局变量i被默认初始化为0),变量i被定义在file2源文件中

0 0
原创粉丝点击