AFr*_*ser 6 c++ operator-overloading
我正在尝试编写一个重载插入操作符的类,但是在我的头文件中我得到了错误.
Overloaded 'operator<<' must be a binary operator (has 3 parameters)
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
.h文件
ostream & operator<<(ostream & os, Domino dom);
Run Code Online (Sandbox Code Playgroud)
.cpp文件
ostream & operator<< (ostream & os, Domino dom) {
return os << dom.toString();
}
Run Code Online (Sandbox Code Playgroud)
我正在关注一本教科书,这是他们作为一个例子,但它不适合我..任何建议?
nit*_*ian 12
插入运算符(<<)可以用作成员函数或朋友函数.
operator <<用作成员函数
ostream& operator<<(ostream& os);
Run Code Online (Sandbox Code Playgroud)
应该调用此函数:
dom << cout;
Run Code Online (Sandbox Code Playgroud)
通常,如果您将运算符用作成员函数,则运算符的左侧应为对象.然后,此对象作为参数隐式传递给成员函数.但是调用会让用户感到困惑,而且看起来并不好看.
operator <<用作朋友函数
friend ostream& operator<<(ostream& os, const Domino& obj);
Run Code Online (Sandbox Code Playgroud)
应该调用此函数:
cout << dom;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,对象dom显式作为引用传递.这种调用更传统,用户可以轻松理解代码的含义.