【C++】重载输出运算符<<

对于Point类:

class Point
{
public:
    Point(float x, float y):_x(x), _y(y){}
private:
    float _x, _y;
}

测试代码的main函数:

int main()
{
    Point a(1, 2),c;
    Point b(3, 4);
    c = b - a;
    cout << b << "-" << a << "=" << c;
}

 重载输出运算符<<:

class Point
{
//重载的输出操作符声明为类的友元函数
friend ostream& operator<<(ostream& o, const Point& p);
public:
    Point(float x, float y):_x(x), _y(y){}
private:
    float _x, _y;
}

//重载为全局函数
ostream& operator<<(ostream& o, const Point& p)
{
    o << "[" << p.x << "," << p.y << "]";  //这里使用的以前的输出运算符<<
    return o;
}

运行结果:

代码如下: ```c #include <iostream> using namespace std; class Time { private: int hour; int minute; int second; public: Time() : hour(0), minute(0), second(0) {} Time(int h, int m, int s) : hour(h), minute(m), second(s) {} Time operator+(const Time& t) const; friend ostream& operator<<(ostream& os, const Time& t); friend istream& operator>>(istream& is, Time& t); }; Time Time::operator+(const Time& t) const { int h = hour + t.hour; int m = minute + t.minute; int s = second + t.second; if (s >= 60) { s -= 60; m++; } if (m >= 60) { m -= 60; h++; } return Time(h, m, s); } ostream& operator<<(ostream& os, const Time& t) { os << t.hour << ":" << t.minute << ":" << t.second; return os; } istream& operator>>(istream& is, Time& t) { is >> t.hour >> t.minute >> t.second; return is; } int main() { Time t1(12, 30, 45); Time t2(3, 15, 20); Time t3 = t1 + t2; cout << t1 << " + " << t2 << " = " << t3 << endl; cin >> t1; cout << "You entered: " << t1 << endl; return 0; } ``` 解释: - 私有数据成员hour, minute, second表示时、分、秒; - 构造函数Time()表示默认构造函数,初始化时分秒为0;构造函数Time(int h, int m, int s)表示带参数的构造函数,初始化时分秒为h、m、s; - 重载加法运算符+,将两个时间相加,并将结果以Time类型返回; - 重载输出运算符<<,将时间以“时:分:秒”的格式输出; - 重载输入运算符>>,从标准输入流中读取“时 分 秒”三个整数,并将它们存入Time对象中; - 在main函数中,演示了加法运算符重载和输入运算符重载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值