#include <iostream>
#include <fstream>
using namespace std;
class Integer
{
public:
int i;
Integer (int ll = 0, int k = 0) : i (ll)
{
cout << "\nconstructor A\n";
}
Integer operator<< (const Integer& left, const Integer& right);
};
Integer operator<< (const Integer& left, const Integer& right)
{
cout << "\ndsfdsfdsf : " << "===" << right.i << "\n";
return left ;
}
int main ()
{
Integer l;
l << 5 << 3 << 2;
return 0;
}
当我从&lt;&lt;的声明中删除关键字friend
时,此代码会给出上述标题错误。运营商。
这里没有任何私密的东西,为什么会这样呢?
答案 0 :(得分:3)
当运算符声明不包含friend
时,声明声明一个成员,并且成员将其类作为其隐式的第一个参数。使用两个显式参数,这会为二元运算符生成三个参数。
答案 1 :(得分:0)
正确的版本应该是这样的
#include <iostream>
#include <fstream>
using namespace std;
class Integer
{
public:
int i;
Integer (int ll = 0, int k = 0) : i (ll)
{
cout << "\nconstructor A\n";
}
Integer operator<< (const Integer& right)
{
cout << "\ndsfdsfdsf : " << "===" << right.i << "\n";
return *this ;
}
};
int main ()
{
Integer l;
l << 5 << 3 << 2;
return 0;
}