C++ 重载类的输出流运算符

C++ 重载类的输出流运算符,c++,C++,假设这是我的班级: class Student { std::string name; int CWID; public: Student(std::string name = "N/A", int CWID = 99999999) : this->name(name), this->CWID(CWID) {} }; 现在,如何重载输出流操作符您可以编写非成员函数 std::ostream& operator<<(std::ostream

假设这是我的班级:

class Student {
    std::string name;
    int CWID;
public:
    Student(std::string name = "N/A", int CWID = 99999999) : this->name(name), this->CWID(CWID) {}
};

现在,如何重载输出流操作符
您可以编写非成员函数

std::ostream& operator<<(std::ostream& os, const Student& stud)
{
  os << stud.name << " " << stud.CWID;
  return os;
}

std::ostream&operator将成员函数添加到返回名称和CWID的类中

std::string getName() const {return name;}
int getCWID() const {return CWID;}
然后,添加一个非成员函数将数据写入流

std::ostream& operator<<(std::ostream& out, Student const& s)
{
   return out << s.getName() << " " << s.getCWID();
}
std::ostream&operator以下是您的操作方法:

class Student {
    std::string name;
    int CWID;
public:
    Student(std::string name = "N/A", int CWID = 99999999) : name(name), CWID(CWID) {}

    friend std::ostream& operator<<(std::ostream& stream, const Student& student);
};


std::ostream& operator<<(std::ostream& stream, const Student& student)
{
    stream << '(' << student.name << ", " << student.CWID << ')';
    return stream;
}
班级学生{
std::字符串名;
int CWID;
公众:
学生(std::string name=“N/A”,int-CWID=9999999):姓名,CWID(CWID){

friend std::ostream&Operator这已经被问了很多次了,以前对类似问题的回答对你没有帮助吗?可能是重复的谢谢Sahu,你一如既往地真的很有帮助。
class Student {
    std::string name;
    int CWID;
public:
    Student(std::string name = "N/A", int CWID = 99999999) : name(name), CWID(CWID) {}

    friend std::ostream& operator<<(std::ostream& stream, const Student& student);
};


std::ostream& operator<<(std::ostream& stream, const Student& student)
{
    stream << '(' << student.name << ", " << student.CWID << ')';
    return stream;
}