成员运算符重载函数双目参数问题c++

#include<iostream.h>classshuzu{public:inta[2][2],b[2][2];shuzu(){a[0][0]=1;a[0][1]=2;... #include<iostream.h>
class shuzu {
public:
int a[2][2],b[2][2];
shuzu()
{
a[0][0]=1;
a[0][1]=2;
a[1][0]=3;
a[1][1]=4;
}
shuzu operator+(int a[2][2],int b[2][2])
{
shuzu temp;
int i,j;
for(i=0;i<2;i++)
for(j=0;j<2;j++)
{temp.a[i][j]=a[i][j]+b[i][j];}
return temp;
}
void cins()
{
cout<<"请输入数组b的值"<<endl;
cout<<"b[0][0] "<<"b[0][1] "<<"b[1][0] "<<"b[1][1] "<<endl;
cin>>b[0][0]>>b[0][1]>>b[1][0]>>b[1][1];
}

};

shuzu operator+(int a,int b )
{
shuzu temp;
int i,j;
for(i=0;i<2;i++)
for(j=0;j<2;j++)
{temp.a[i][j]=a[i][j]+b[i][j];}
return temp;
}
void main()
{
shuzu c,d;
int i,j;
c.cins();
d=c.a+c.b;
for(i=0;i<2;i++)
for(j=0;j<2;j++)
cout<<c.a[i][j]<<"+"<<c.b[i][j]<<"="<<d.a[i][j]<<endl;
}

(1)为何 operator既然是成员函数,为什么调用不了二维数组啊,和b呢?
(2)成员运算符重载函数双目参数 参数表必须是一个对象吗?
我的目标是实现两个数组相加
求大神啊
展开
 我来答
abcd1236386
2014-05-26 · TA获得超过774个赞
知道小有建树答主
回答量:539
采纳率:0%
帮助的人:522万
展开全部
问题出在你的(2)上。
成员运算符的话,成员本身要算一个参数的。所以双目运算符,成为成员函数的话,只需要一个参数,同理,单目运算符就不需要参数了。你参数多了。
cbyzzy37
推荐于2016-02-07
知道答主
回答量:16
采纳率:0%
帮助的人:14.4万
展开全部
这个...参数表里必须有一个对象的...既然你重载了成员运算符,那么在调用的时候就必须明确调用的是重载函数...

你用两个数组相加,编译的时候无法传递对象的地址,自然调用不了重载函数啊...

想改的话...换个思路吧...+号左边必须是对象应该是没办法的...
追问
那我要想下面用加号时是  d=c.a+c.b; 这种形式的,应如何写operator函数?

这是最主要的问题,因为每次都用类来相加那多不清晰
当然我可以把两个数组弄成两个类,但这种情况下怎么搞?
大神····
追答
我感觉重载是行不通的吧....你试试用友元函数写...不同的编译器可能情况不同...我这里的编译器要求友元函数里参数必须有对象...

它语法就这么弄的... 没办法
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式