lwqsbtl 2018-10-31 13:00 采纳率: 42.9%
浏览 405

c++重载+时号出错,求大神指点


#include<iostream>
#include<cstring>
#include<string>
class Array{
    string name;
    int count;
    int *data;
public:
    Array();
    Array(string name,const int *data,int count);
    ~Array();
    void print();
    void order();
    Array operator+(const Array &array);  //重载‘+’ ????
    friend ostream &operator<<(ostream &out, const Array &array );
};

Array::Array(){name=" "; count=0; data=NULL;}
Array::Array(string name, const int *data,int count){
    this->name=name;
    this->count=count;
    this->data=new int[count];
    for(int i=0;i<count;i++){
        this->data[i]=data[i];   // *this .
    }
}
Array::~Array(){if(data!=NULL) {delete []data;count=0;}}

void Array::print(){
    cout<<name<<": ";
    for(int i=0;i<count;i++){
        cout<<data[i]<<" ";
    }
    cout<<endl;
}
ostream &operator<<(ostream & AA, const Array &array ){
    AA<<array.name<<": ";
    for(int i=0;i<array.count;i++){
        AA<<array.data[i]<<" ";
    }
    AA<<endl;
    return AA;
}
void Array::order(){
    int tmp;
    for(int i=0;i<count-1;i++)
        for(int j=0;j<count-1-i;j++)
            if(data[j]>data[j+1]){
                tmp=data[j];
                data[j]=data[j+1];
                data[j+1]=tmp;
            }
}

Array  Array::operator+(const Array &array){   //重载‘+’ ????
    Array  temp;
    int max= (count>array.count? count:array.count);
    int min= (count<array.count? count:array.count);
    temp.name=name +"+"+ array.name ;
    temp.count=max;
    temp.data=new int[temp.count];
    int i=0;
    for(;i<min;i++)
        temp.data[i]=data[i]+array.data[i];
    for(;i<count;i++)
        temp.data[i]=data[i];
    for(;i<array.count;i++)
        temp.data[i]=array.data[i];
    return temp;
}


void main(){
    int data1[]={9,8,7,6,5,4,3,2,1,0};
    Array array1("array1",data1,10);
    cout<<array1;
    int data2[]={1,3,5,7,8,6,4,2};
    Array array2("array2",data2,8);
    cout<<array2 ;

    array1.order();
    cout<<"after order1 :"<<array1;
    array2.order();
    cout<<"after order2 :"<<array2;


    cout<<(array1+array2);  //显示出错,屏蔽这句话就正常了
    system("pause");
}

  • 写回答

2条回答 默认 最新

  • Italink 2018-10-31 13:05
    关注

    代码漏了很多,你贴代码的时候点一下编辑窗口的</>,然后把代码放在2行省略号之间

    评论

报告相同问题?

悬赏问题

  • ¥15 Matlab问题解答有两个问题
  • ¥50 Oracle Kubernetes服务器集群主节点无法访问,工作节点可以访问
  • ¥15 LCD12864中文显示
  • ¥15 在使用CH341SER.EXE时不小心把所有驱动文件删除了怎么解决
  • ¥15 gsoap生成onvif框架
  • ¥15 有关sql server business intellige安装,包括SSDT、SSMS。
  • ¥15 stm32的can接口不能收发数据
  • ¥15 目标检测算法移植到arm开发板
  • ¥15 利用JD51设计温度报警系统
  • ¥15 快手联盟怎么快速的跑出建立模型