C++ Practical-2 day4 运算符重载之输入输出运算符重载

系列文章目录

点击直达——文章总目录



C++ Practical-2 day4 运算符重载之输入输出运算符重载

Overview

  • C++不练习coding,就相当于空中楼阁,基础不扎实
  • 光吃不干,等于没吃

1.运算符重载之输入输出运算符重载

在C++中,重载输入输出运算符(operator<<operator>>)可以让你自定义类的对象与标准输入输出流(如 std::coutstd::cin)之间的交互方式。这使得你的类的对象可以像内置类型一样直接与输入输出流进行交互。

1.1.重载输出运算符 <<

1.1.1.语法
friend std::ostream& operator<<(std::ostream& os, const 类名& obj);
1.1.2.示例

假设你有一个 Point 类,你想通过 std::cout 打印它的坐标。

#include <iostream>

class Point {
private:
    int x, y;

public:
    Point(int x, int y) : x(x), y(y) {}

    // 重载输出运算符
    friend std::ostream& operator<<(std::ostream& os, const Point& p) {
        os << "(" << p.x << ", " << p.y << ")";
        return os;
    }
};

int main() {
    Point p(10, 20);
    std::cout << p << std::endl;
    return 0;
}

1.2.重载输入运算符 >>

1.2.1.语法
friend std::istream& operator>>(std::istream& is, 类名& obj);
1.2.2.示例

继续使用 Point 类,你可以定义一个输入运算符,允许从 std::cin 读取坐标。

#include <iostream>

class Point {
private:
    int x, y;

public:
    Point() : x(0), y(0) {}

    // 重载输入运算符
    friend std::istream& operator>>(std::istream& is, Point& p) {
        is >> p.x >> p.y;
        return is;
    }

    // 重载输出运算符
    friend std::ostream& operator<<(std::ostream& os, const Point& p) {
        os << "(" << p.x << ", " << p.y << ")";
        return os;
    }
};

int main() {
    Point p;
    std::cout << "Enter coordinates of the point (x y): ";
    std::cin >> p;
    std::cout << "You entered: " << p << std::endl;
    return 0;
}

1.3.注意事项

  1. 友元函数:输入输出运算符通常定义为类的友元函数,这样它们就可以访问类的私有成员。
  2. 返回类型:输入输出运算符应该返回对流的引用,以便可以链式调用。
  3. 异常处理:在处理输入输出时,应该考虑异常处理,例如输入不合法的情况。
  4. 效率:直接操作流可以提高效率,因为避免了额外的字符串转换。

通过重载输入输出运算符,你的类将更加易于使用,代码可读性也会提高。


关于作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WeSiGJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值