【发布时间】:2019-08-11 06:26:15
【问题描述】:
我正在学习 C++ 中的运算符重载,我想知道以下代码的输出
#include<iostream>
using namespace std;
class xyz
{
public:
int i;
friend ostream & operator<<( ostream & Out , int);
};
ostream & operator<<(ostream & out , int i)
{
cout<<10+i<<endl;
}
int main()
{
xyz A;
A.i=10;
cout<<10;
}
我有两个错误
错误:“运算符
错误:“运算符
谁能解释一下是什么问题?
我想知道,如果我重载一个“
【问题讨论】:
-
int加上您提供的那个已经超载。你想用代码实现什么?如果您想输出xyz,那么您可能想为该类型编写重载,而不是为其成员编写重载 -
我很好奇。假设您可以用您自己的替换the library provided overload,您如何期望
cout<<10+i<<endl;在没有终止的情况下不递归? -
还应该有行号和文件名(如果使用好的 IDE,还应该有导航)。你可以检查有两个定义。
-
tbh 很难回答你的问题,因为它并不清楚为什么不应该有歧义;)。如果您解释为什么您认为必须为
int编写<<重载,也许问题会更清楚 -
你不能只是放随机代码并期望它工作,看起来你不知道你在做什么。似乎您尝试效仿一个示例,但是对于
xyz而不是int而言,运算符会被重载