C++重载操作符的参数个数定义?

YGguang 2014-08-15 05:00:27
C++中重载操作符 时,发现操作符的参数是有规定的。像<<做为友元函数重载时只能传入两个。虽然想想好像这并没有什么问题?但是想知道谁规定了这个参数个数呢?是编译器吗?细节是怎么做到的呢?

我今天想结合友元成员函数与重载运算符做个试验:

class X;
class Y{
friend std:: ostream & operator <<(Y &y,std::ostream &os) ;
public:
Y(int x){y=x;};
int get(){return y;}
private:
int y;
};
class X{
private:
int x;
public:
X(int m){x=m;};
X(X &y){x=y.get();};
~X(){};
int get(){return x;};
void set(int y){x=y;};
std:: ostream & operator <<(Y &y,std::ostream &os){os<<y.y;return os;};//想通过X类来访问显示Y类的数据
};
int main()
{
X x(1);
Y y=Y(1);
x<<(y,std::cout); //这里没有用友元函数来重载<<操作符,所以相当于调用 x.operator<<(y,std::cout)
return 0;
}



编译结果:二进制“operator <<”的参数太多,所以想请教下这些操作符的参数个数怎么确定下来的,或者有没有什么办法可以让我实现使用友元的办法,让X类显示Y类的数据?
...全文
232 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
使用的时候是 cout<<a; 所以是两个参数一个是左边的cout一个是右边的a类型 多个参数的话还是写函数吧

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧