c++中的函数原型
要使用c++函数,必须完成如下三个部分:
1:提供函数定义
2:提供函数原型
3:调用函数
库函数是已经定义和编译好的函数,同时可以使用标准库文件提供其原型,但是我们在创建自己的函数时,必须自行处理这3个方面——定义、提供原型和调用。
那么,我们为什么需要原型呢?
原型描述了函数到编译器的接口,也就是说,它将函数返回值的类型以及参数和数量告诉了编译器。例如,
double volume=cube(side);
首先,原型告诉编译器,cube()有一个double参数,如果程序没有提供这样的参数,原型将让编译器能够捕获这种错误。其次,cube()函数完成计算后,将把返回值位置放在指定的位置—可能是cpu寄存器,也可能是内存中。然后调用函数将从这个位置取得返回值。由于原型指出cube()类型为double,因此编译器知道应检索多少个字节以及如何解释它们。如果没有这些信息,编译器只能进行猜测,而编译器是不会这样做的。
可能还有人问,为何编译器需要原型,难道他就不能在文件中进一步查找吗?这个方法的一个问题是效率不高。编译器在搜索文件的剩余部分将必须停止对main()的编译。一个更严重的问题是,函数可能并不在文件中,c++是允许将一个程序放在多个文件中,单独编译这些文件,然后再将它们组合起来。在这种情况下,编译器在编译main时,是无权访问函数代码。如果函数位于库中,情况也是如此。避免使用函数原型的唯一方法是,在首次使用函数之前定义它,但这并不总是可行的。另外,c++的编程风格是将main()放在最前面,因为它通常提供了程序的整体结构。
关于原型的功能:他极大的降低了程序出错的几率,具体来说,主要有以下几点
1:编译器能够正确的处理函数返回值
2:编译器检查使用的参数数目是否正确。
3:编译器检查使用的参数类型是否正确。

浙公网安备 33010602011771号