这个程序哪出错了啊求解

图片说明

#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 循环有问题