成员运算符重载函数双目参数问题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)成员运算符重载函数双目参数 参数表必须是一个对象吗?
我的目标是实现两个数组相加
求大神啊 展开
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)成员运算符重载函数双目参数 参数表必须是一个对象吗?
我的目标是实现两个数组相加
求大神啊 展开
2个回答
展开全部
这个...参数表里必须有一个对象的...既然你重载了成员运算符,那么在调用的时候就必须明确调用的是重载函数...
你用两个数组相加,编译的时候无法传递对象的地址,自然调用不了重载函数啊...
想改的话...换个思路吧...+号左边必须是对象应该是没办法的...
你用两个数组相加,编译的时候无法传递对象的地址,自然调用不了重载函数啊...
想改的话...换个思路吧...+号左边必须是对象应该是没办法的...
追问
那我要想下面用加号时是 d=c.a+c.b; 这种形式的,应如何写operator函数?
这是最主要的问题,因为每次都用类来相加那多不清晰
当然我可以把两个数组弄成两个类,但这种情况下怎么搞?
大神····
追答
我感觉重载是行不通的吧....你试试用友元函数写...不同的编译器可能情况不同...我这里的编译器要求友元函数里参数必须有对象...
它语法就这么弄的... 没办法
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询