3.5 添加新函数
到目前为止我们只使用了C++内置的函数,然而也可以添加新函数。实际上我们已经见过一个函数定义了:main。main这个函数名很特殊,因为它表示程序开始执行的地方,但main函数的语法形式和其它函数定义一样:
void 函数名(参数列表) {
语句
}
你可以为自己的函数任意定义名称,但不能命名为main或者其它C++关键字。参数列表指定了使用(或称为调用)新函数所需要提供的信息(如果有的话)。
main函数定义中的空括号表示它不携带任何参数。我们首先要写的几个函数也是没有参数的,语法形式如下:
void newLine() {
cout << endl;
}
此函数名为newLine,只有一个语句,用以输出换行符,其中换行用特殊值endl表示。
在main函数中,我们可以像调用C++内置函数一样调用这个新函数: void main () { cout << "First Line." << endl; newLine (); cout << "Second Line." << endl; }
这段程序输出如下: First line.
Second line.
注意:输出的两行之间有多余的空行。我们要想在两行之间出现更多的空行该怎么做呢?可以重复调用同一个函数:
void main ()
{
cout << "First Line." << endl;
newLine ();
newLine ();
newLine ();
cout << "Second Line." << endl;
}
或者我们写一个新函数,命名为threeLine,作用是打印3个空行:
void threeLine ()
{
newLine (); newLine (); newLine ();
}
void main ()
{
cout << "First Line." << endl;
threeLine ();
cout << "Second Line." << endl;
}
对于这个程序,你应该注意以下几点:
你可以反复调用同一处理过程,事实上这种做法是非常普遍、实用的。
你可以让一个函数调用另一函数。在本例中,main函数调用threeLine,threeLine又调用newLine。同样,这也是普遍、实用的做法。
在threeLine这个函数中,我一行写了三条语句,这符合语法规范(记住,空格和空行通常不改变程序的意义)。然而更好的方式通常是每条语句独占一行,这样程序更易读,我是为了节约篇幅才破坏了这条规则。
为什么我们值得费力气来创建这些新函数?到现在为止可能讲的还不是很清楚。实际上原因有很多,本例只说明了两点:
创建新函数使你有机会给一组语句起个名字。函数将一个复杂的计算过程隐藏在一个简单指令背后,并使用英语单词取代晦涩代码,可以起到简化程序的作用。试问,newLine和cout << endl,哪个更清晰呢?
创建新函数能够去除重复代码,使程序更短小。例如,连续打印九个空行的一种简单做法是调用treeLine三次,那么连续打印27个空行你要怎么做呢?