如何在c++中重载流操作符

How to overload stream operators in C++

本文关键字:重载 操作符 c++      更新时间:2023-10-16

我需要一个类来重载流操作符<<(插入器)和>>(提取器)插入或提取一个私有整数变量

一个选项是:

#include <iostream>
class C
{
private:
    int i;
    friend std::ostream& operator<<(std::ostream& os, const C& rhs)
    {
        os << rhs.i;
        return os;
    }
    friend std::istream& operator>>(std::istream& is, C& rhs)
    {
        is >> rhs.i;
        return is;
    }
};
int main()
{
    C c;
    std::cin >> c;
    std::cout << c << 'n';
    return 0;
}

去你自己的班级?看看这个链接:http://www.cs.caltech.edu/courses/cs11/material/cpp/donnie/cpp-ops.html

简而言之,您将在类中添加如下内容:

ClassName & operator<<(int rhs) {
    mylocalint = rhs;
}
ClassName & operator>> (int *rhs) {
    *rhs = mylocalint;
}
class myclass {
private: int variable;
friend std::ostream& operator<<(std::ostream& out, const myclass& inst);
friend std::istream& operator>>(std::istream& out, myclass& inst);
};
std::ostream& operator<<(std::ostream& out, const myclass& inst)
{
    return out << inst.variable;
}
std::istream& operator>>(std::istream& in, myclass& inst)
{
    return in >> inst.variable;
}
int main() {
    myclass obj;
    std::cin >> obj;
    std::cout << obj;
}