我试图operator<<作为成员函数重载.如果只是这样做它的工作原理:
friend ostream& operator<<(ostream& os, const MyClass& myClass); 在我的头文件和我的MyClass.cc文件中:
ostream& operator<<(ostream& os, const MyClass& myClass)
{
return myClass.print(os);
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试friend取消并使其成为成员函数,那么它抱怨operator<<只能采用一个参数.为什么?
ostream& MyClass::operator<<(ostream& os, const MyClass& myClass)
{
return myClass.print(os);
}
Run Code Online (Sandbox Code Playgroud)
我在这个问题上读到它不能成为一个成员函数,但不确定为什么?
我试图弄清楚为什么我不能将重载运算符<<称为成员函数,就像我将operator +称为成员函数一样。
#include "pch.h"
#include <iostream>
using namespace std;
class A
{
int x;
public: A(int i = 0) { x = i; }
A operator+(const A& a) { return x + a.x; }
template <class T> ostream& operator<<(ostream&);
};
template <class T>
ostream& A::operator<<(ostream& o) { o << x; return o; }
int main()
{
A a1(33), a2(-21);
a1.operator+(a2);
a1.operator<<(cout); // Error here
return 0;
}
Run Code Online (Sandbox Code Playgroud)