#include"iostream"
using namespace std;
class sz
{
int* a;
public:
sz()
{
a=new int[2];
}
~sz()
{
delete a;
}
void set()
{
int i;
for(i=0;i {
cin>>a[i];
}
}
sz operator+(sz t)
{
int i=0;
sz z;
for(i=0;i<2;i++)
z.a[i]=a[i]+t.a[i];
return z;
}
sz operator-(sz t)
{
int i=0,j=0;
sz z;
for(i=0;i<2;i++)
z.a[i]=a[i]-t.a[i];
return z;
}
void sc()
{
int i;
for(i=0;i<2;i++)
{
cout<<a[i]<<endl;
}
}
};
int main()
{
sz x,y,z,m;
cout<<"srsj ";
x.set();
cout<<"srsj ";
y.set();
z=x+y;
z.sc();
m=x-y;
m.sc();
return 0;
}
http://blog.csdn.net/dingyuanpu/article/details/5852825
你得贴上打印出的错误信息啊!
运算符重载也有问题,不过你main 函数里面没有涉及到+ -,就没有改
#include"iostream"
using namespace std;
//sz类
class sz
{
int* a;
public:
//构造函数
sz(){
a=new int[2];
}
//析构函数
~sz(){
delete a;
}
void set(){
int i;
//错误之处
for(i=0; i < sizeof(a) ; i++ ) {
cin>>a[i];
}
/*
for(i=0; i < 2 ; i++ ) {
cin>>a[i];
}
*/
}
//重写 +
sz operator+(sz t){
int i=0;
sz z;
for(i=0;i<2;i++)
z.a[i]=a[i]+t.a[i];
return z;
}
//重写 -
sz operator-(sz t){
int i=0,j=0;
sz z;
for(i=0;i<2;i++)
z.a[i]=a[i]-t.a[i];
return z;
}
//错误之处 构造函数没有返回值,方法名与类名不要相同
// void sc(){
// int i;
// for(i=0;i<2;i++)
// {
// cout<<a[i]<<endl;
// }
// }
void print_sc(){
int i;
for(i=0;i<2;i++)
{
cout<<a[i]<<endl;
}
}
};
int main(){
sz x,y,z,m;
cout<<"srsj ";
x.set();
cout<<"srsj ";
y.set();
z=x+y;
z.print_sc();
m=x-y;
m.print_sc();
return 0;
}
第一个错误之处,你对比下看,你的 for 循环有问题