示例解释重载
假设trip是一个Time对象。为显示Time的值,可以使用show()函数,然而,如果可以像下面这样操作更好:
cout<< trip; //make cout recognize Time class?
解释
<< 是可以被重载的C++运算符之一。
cout是一个 ostream 对象,它是智能的,能够识别所有的c++ 基本类型。这是因为对于每种基本类型,ostream 类声明中都包含了相应的重载的operator<<() 定义。
因此,要使cout 能够识别Time对象,一种方法是将一个新的函数运算符添加到 ostream 类的声明中。
但修改 iostream 文件不安全,这样做会在标准接口上浪费时间。相反,通过Time 类声明来让 Time 类知道如何使用cout 。
<<的第一种版本
要使Time 类对象知道使用 cout ,必须使用友元函数。这是什么原因呢?因为下面这样的语句使用两个对象,第一个是 ostream类对象(cout) :
cout <<