项目6-1 重载输出函数
在下面的项目中,我们将创建一组重载的函数,用于把不同类型的数据输出到显示器上。尽管使用cout是相当便捷的,但是下面的程序提供了另外一种输出方式。这种输出方式或许对一些程序员来时是很有吸引力的。实际上,Java和C#中使用的都是输出函数,而不是输出运算符。重载输出函数后,我们既可以使用输出函数也可以使用输出运算符,那种方便我们就可以使用哪种方式。另外,我们还可以对输出函数进行裁剪,以满足自己特殊的需要。例如,我们可以输出布尔类型变量的值为“true”或者“false”,而不是1或者0。
我们将创建两套函数:println()和print()。println()函数把参数的值输出,并输出一个换行。print()函数输出参数的值,但是不输出换行。如下:
print(1);
println(‘X’);
print(“Function overloading is powerful.”);
print(18.22);
将产生如下的输出:
1X
Function overloading is powerful.18.22
我们在程序中会针对bool,char,int,long,char *,double类型来对print()和println()函数进行重载。当然,自己也可以增加针对别的类型的重载。
步骤:
1. 创建一个文件,命名为Print.cpp
2. 以下面的代码开始:
/*
项目-1
重载函数println()和print(),用于显示各种类型的数据
*/
#include <iostream>
using namespace std;
3. 如下,增加函数print()和println()的原型:
//下面的这些函数将输出一个换行
void println(bool b);
void println(int i);
void println(long i);
void println(char ch);
void println(char * str);
void println(double d);
//下面的这些函数将不会输出换行
void print(bool b);
void print(int i);
void print(long i);
void print(char ch);
void print(char * str);
void print(double d);
4. 如下,实现println()函数
//下面是println()函数的实现
void println(bool b)
{
if(b) cout <<"true\n";
else cout << "false\n";
}
void println(int i)
{
cout << i << "\n";
}
void println(long i)
{
cout << i << "\n";
}
void println(char ch)
{
cout << ch << "\n";
}
void println(char * str)
{
cout << str << "\n";
}
void println(double d)
{
cout << d << "\n";
}
注意上面的实现在每次输出之后增加了输出换行。同时,println(bool)函数输出的是“true”或者“false”。可见,我们可以很方便地自行定义输出格式以便满足自己的需要。
5. print()函数的实现如下:
//下面是print()函数的实现
void print(bool b)
{
if(b) cout <<"true";
else cout << "false";
}
void print(int i)
{
cout << i ;
}
void print(long i)
{
cout << i;
}
void print(char ch)
{
cout << ch;
}
void print(char * str)
{
cout << str;
}
void print(double d)
{
cout << d;
}
这些函数除了不输出换行外,其它的都和println()函数一样。因此,连续的输出将会是在同一行。
6. 完整的程序如下:
/*
项目-1
重载函数println()和print(),用于显示各种类型的数据
*/
#include <iostream>
using namespace std;
//下面的这些函数将输出一个换行
void println(bool b);
void println(int i);
void println(long i);
void println(char ch);
void println(char * str);
void println(double d);
//下面的这些函数将不会输出换行
void print(bool b);
void print(int i);
void print(long i);
void print(char ch);
void print(char * str);
void print(double d);
int main()
{
println(true);
println(10);
println("This is a test");
println('x');
println(99L);
println(123.23);
print("Here are some values: ");
print(false);
print(' ' );
print(100000L);
print(' ');
print(100.01);
println("Done!");
return 0;
}
//下面是println()函数的实现
void println(bool b)
{
if(b) cout <<"true\n";
else cout << "false\n";
}
void println(int i)
{
cout << i << "\n";
}
void println(long i)
{
cout << i << "\n";
}
void println(char ch)
{
cout << ch << "\n";
}
void println(char * str)
{
cout << str << "\n";
}
void println(double d)
{
cout << d << "\n";
}
//下面是print()函数的实现
void print(bool b)
{
if(b) cout <<"true";
else cout << "false";
}
void print(int i)
{
cout << i ;
}
void print(long i)
{
cout << i;
}
void print(char ch)
{
cout << ch;
}
void print(char * str)
{
cout << str;
}
void print(double d)
{
cout << d;
}
程序的输出如下:
true
10
This is a test
x
99
123.23
Here are some values: false 100000 100.01Done!