翻译:C++Primer.Plus(第三版)
例:
.#include
void cheers(int);
double cube(double x);
int main()
{
using namespace std;
cheers(5);
cout << “Give me a number: “;
double side;
cin >> side;
double volume = cube(side);
cout << “A ” << side << ” foot cube has a volume of “;
cout << volume << ” cubic feet.\n”;
cheers(cube(2));
system("PAUSE");
return 0;
}
void cheers(int n)
{
using namespace std;
for (int i = 0; i < n; i++)
cout << “Cheers! “;
cout << endl;
}
double cube(double x)
{
return x * x * x;
}
1.为什么需要函数原型?
原型描述了函数到编译器的接口,也就是说,它将函数返回值的类型(如果有的话)以及参数的类型和数量告诉编译器。例如上述例子中的函数调用:
double volume = cube(side);
首先,原型告诉编译器,cube()有一个double参数。如果程序没有提供这样的参数,原型将让编译器能够捕获这种错误。其次,cube()函数完成计算后,将把返回值放置在指定的位置——可能是CPU寄存器,也可能是内存中。然后调用函数(这里为main())将从这个位置取得返回值。由于原型指出了cube()的类型为double,因此编译器知道应检索多少个字节以及如何解释它们。如果没有这些信息,编译器将只能进行猜测,而编译器是不会这样做的。
2.原型的功能
(1)编译器正确处理函数返回值;
(2)编译器检查使用的参数数目是否正确;
(3)编译器检查使用的参数类型是否正确。如果不正确,则转换为正确的类型(如果可能的话)。