为什么在C++中函数要先声明然后再定义呢?
答案:5 悬赏:10 手机版
解决时间 2021-03-06 23:08
- 提问者网友:难遇难求
- 2021-03-06 09:08
为什么在C++中函数要先声明然后再定义呢?
最佳答案
- 五星知识达人网友:街头电车
- 2021-03-06 09:31
1、函数的作用域只是从定义的地方开始的。也就是说,在函数定义行之上,是无法使用该函数的。而把函数的定义都放在主函数之前的话,程序会变得不清楚。所以在使用前只需用一行声明一下就可以了。
2、也许函数并不都是在一个文件里使用,这时候,如果再定义一遍,不仅显得罗嗦,而且使程序的维护变得麻烦,如果修改这个函数的话,需要修改每个定义。
所以可以把函数声明放在一个头文件中,使用的时候,包含这个头文件就可以了。
3、有时候,自己写的函数需要给别人用,比如商业用途。这样的话,不能将整个函数的实现都给对方,这就需要生成一个库文件,而将函数声明放在头文件中来给对方使用。
4、有时候需要用函数声明来重新声明函数,即使前面已经声明过。这样做可以设置新的默认参数,也可以是为了屏蔽作用域外同名的函数声明。
2、也许函数并不都是在一个文件里使用,这时候,如果再定义一遍,不仅显得罗嗦,而且使程序的维护变得麻烦,如果修改这个函数的话,需要修改每个定义。
所以可以把函数声明放在一个头文件中,使用的时候,包含这个头文件就可以了。
3、有时候,自己写的函数需要给别人用,比如商业用途。这样的话,不能将整个函数的实现都给对方,这就需要生成一个库文件,而将函数声明放在头文件中来给对方使用。
4、有时候需要用函数声明来重新声明函数,即使前面已经声明过。这样做可以设置新的默认参数,也可以是为了屏蔽作用域外同名的函数声明。
全部回答
- 1楼网友:玩世
- 2021-03-06 13:07
这是最好的习惯,为什么?因为这样就是让编译器知道你下面有什么函数“出场”,如果你不先声明,一般不会产生错误,但有可能在一个函数调用另一个时,由于先后出现顺序不同引起出错,其实“编写上”并没错。
还有就是在大型联合编程时,一般都将子函数群放在main程序后面方便阅读。这样前边要加上这些函数的声明。
声明不声明执行速度上没变化
还有就是在大型联合编程时,一般都将子函数群放在main程序后面方便阅读。这样前边要加上这些函数的声明。
声明不声明执行速度上没变化
- 2楼网友:有你哪都是故乡
- 2021-03-06 12:00
这是编译器的要求。
函数定义有两种方法。一种是写在主函数 main() 前面,声明和定义一起写。另一种是在主函数前面写“原型”,在主函数之后 或 在分开的 .cpp 文件里写定义。
小程序一般用前者。大程序一般用后者。库函数也用后者(库函数的原型声明放在头文件里)。
函数定义有两种方法。一种是写在主函数 main() 前面,声明和定义一起写。另一种是在主函数前面写“原型”,在主函数之后 或 在分开的 .cpp 文件里写定义。
小程序一般用前者。大程序一般用后者。库函数也用后者(库函数的原型声明放在头文件里)。
- 3楼网友:不想翻身的咸鱼
- 2021-03-06 10:52
看不懂这个问题啊
- 4楼网友:骨子里都是戏
- 2021-03-06 09:47
你也可以不声明,直接定义。但:
1、函数的作用域只是从定义的地方开始的。也就是说,在函数定义行之上,你是无法使用该函数的。而把函数的定义都放在主函数之前的话,程序会变得不清楚。所以在使用前只需用一行声明一下就可以了,明了。
2、也许函数并不都是在一个文件里使用,这时候,如果再定义一遍,不仅显得罗嗦,而且使程序的维护变得麻烦,如果修改这个函数的话,需要修改每个定义。
所以可以把函数声明放在一个头文件中,使用的时候,包含这个头文件就可以了。
3、有时候,自己写的函数需要给别人用,比如商业用途。这样的话,不能将整个函数的实现都给对方,这就需要生成一个库文件,而将函数声明放在头文件中来给对方使用。
4、有时候需要用函数声明来重新声明函数,即使前面已经声明过。这样做可以设置新的默认参数,也可以是为了屏蔽作用域外同名的函数声明。
1、函数的作用域只是从定义的地方开始的。也就是说,在函数定义行之上,你是无法使用该函数的。而把函数的定义都放在主函数之前的话,程序会变得不清楚。所以在使用前只需用一行声明一下就可以了,明了。
2、也许函数并不都是在一个文件里使用,这时候,如果再定义一遍,不仅显得罗嗦,而且使程序的维护变得麻烦,如果修改这个函数的话,需要修改每个定义。
所以可以把函数声明放在一个头文件中,使用的时候,包含这个头文件就可以了。
3、有时候,自己写的函数需要给别人用,比如商业用途。这样的话,不能将整个函数的实现都给对方,这就需要生成一个库文件,而将函数声明放在头文件中来给对方使用。
4、有时候需要用函数声明来重新声明函数,即使前面已经声明过。这样做可以设置新的默认参数,也可以是为了屏蔽作用域外同名的函数声明。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯