operator <<重载

boa*_*oaz 4 c++ operator-overloading

可能重复:
运算符重载

我没有发现任何可以帮助我解决这个问题的事情......我正试图过载<< operator,这是我的代码:

 ostream& Complex::operator<<(ostream& out,const Complex& b){
    out<<"("<<b.x<<","<<b.y<<")";
    return out;
}    
Run Code Online (Sandbox Code Playgroud)

这是H文件中的声明:

 ostream& operator<<(ostream& out,const Complex& b);
Run Code Online (Sandbox Code Playgroud)

我收到此错误: error: std::ostream& Complex::operator<<(std::ostream&, const Complex&) must take exactly one argument

为什么我做错了?谢谢

Lol*_*4t0 10

在你的情况下,你operator <<应该是自由职能,而不是Complex集体成员.

如果你做了你的operator <<类成员,它实际上应该采用一个参数,应该是stream.但那你就不会写得像

std::cout << complex_number;
Run Code Online (Sandbox Code Playgroud)

complex_number << std::cout;
Run Code Online (Sandbox Code Playgroud)

这相当于

complex_number. operator << (std::cout);
Run Code Online (Sandbox Code Playgroud)

正如您所注意到的那样,这并不常见,这就是operator <<通常定义为自由函数的原因.

  • 而且这个自由函数通常是你对象的"朋友". (2认同)