为自己的类重载 << 运算符

输出流使用标准类型的插入 (<<) 运算符。 还可以为自己的类重载 << 运算符。

示例

write 函数示例演示了 Date 结构的使用。 日期是 C++ 类的理想候选,其中数据成员(月、日和年)在视图中处于隐藏状态。 输出流是用于显示这种结构的逻辑目标。 此代码将使用 cout 对象显示日期:

Date dt(1, 2, 92);

cout <<dt;

若要获取 cout 以接受插入运算符后的 Date 对象,请重载该插入运算符,以识别左侧的 ostream 对象和右侧的 Date。 然后重载的 << 运算符函数必须作为 Date 类的友元进行声明,以便其能够访问 Date 对象中的私有数据。

// overload_date.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;

class Date
{
    int mo, da, yr;
public:
    Date(int m, int d, int y)
    {
        mo = m; da = d; yr = y;
    }
    friend ostream& operator<<(ostream& os, const Date& dt);
};

ostream& operator<<(ostream& os, const Date& dt)
{
    os << dt.mo << '/' << dt.da << '/' << dt.yr;
    return os;
}

int main()
{
    Date dt(5, 6, 92);
    cout << dt;
}
5/6/92

备注

重载的运算符将返回原始 ostream 对象的引用,这意味着你可以合并插入:

cout <<"The date is" <<dt <<flush;

另请参阅

输出流