声明和定义的区别

++程序通常由许多文件组成,为了让多个文件访问相同的变量,c++区分了声明和定义。 
        变量的定义(definition)用于为变量分配存储空间,还可以为变量指定初始值。在程序中,变量有且仅有一个定义。 
        声明(declaration)用于向程序表明变量的类型和名字。定义也是声明:当定义变量的时候我们声明了它的类型和名字。可以通过使用extern声明变量名而不定义它。不定义变量的声明包括对象名、对象类型和对象类型前的关键字extern。 
        extern声明不是定义,也不分配存储空间。事实上它只是说明变量定义在程序的其他地方。程序中变量可以声明多次,但只能定义一次。 
        只有当声明也是定义时,声明才可以有初始化式,因为只有定义才分配存储空间。初始化式必须要有存储空间来进行初始化。如果声明有初始化式,那么它可被当作是定义,即使声明标记为extern。 
        任何在多文件中使用的变量都需要有与定义分离的声明。在这种情况下,一个文件含有变量的定义,使用该变量的其他文件则包含该变量的声明(而不是定义)。

 

你也可以不声明,直接定义。但:

 

1、函数的作用域只是从定义的地方开始的。也就是说,在函数定义行之上,你是无法使用该函数的。而把函数的定义都放在主函数之前的话,程序会变得不清楚。所以在使用前只需用一行声明一下就可以了,明了。
2、也许函数并不都是在一个文件里使用,这时候,如果再定义一遍,不仅显得罗嗦,而且使程序的维护变得麻烦,如果修改这个函数的话,需要修改每个定义。
所以可以把函数声明放在一个头文件中,使用的时候,包含这个头文件就可以了。
3、有时候,自己写的函数需要给别人用,比如商业用途。这样的话,不能将整个函数的实现都给对方,这就需要生成一个库文件,而将函数声明放在头文件中来给对方使用。
4、有时候需要用函数声明来重新声明函数,即使前面已经声明过。这样做可以设置新的默认参数,也可以是为了屏蔽作用域外同名的函数声明。

 

参考:http://hi.baidu.com/guoerguoerguoer/blog/item/d0e275eb570cefd9d439c942.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值