lwqsbtl
2018-10-31 08:46
采纳率: 42.9%
浏览 701

C++等号运算符‘=’重载问题,显示乱码。

c++中定义两个数组类,重载‘=’运算符,令其按位赋值而非直接地址赋值,调用重载操作符后,显示乱码, 刚开始学习c++,求大神帮忙

class ARRAY{ //数组 类
int N;
int *arr;
public:
ARRAY();
ARRAY(int *b,int m);
~ARRAY(){delete []arr;}
void setfirst(int a){ *arr=a;}

void show();
ARRAY operator=(ARRAY b);

};
ARRAY ARRAY::operator=(ARRAY b){ // 重载 =
N=b.N;
arr=new int[N];
for(int i=0;i<N;i++)
arr[i]=b.arr[i];
return *this;
}
ARRAY::ARRAY(){ //构造函数
N=10;
arr=new int[N];
for(int i=0;i<N;i++){
arr[i]=0;
}
}
ARRAY::ARRAY(int *b,int m){ //构造函数
N=m;
arr=new int[N];
for(int i=0;i<N;i++){
arr[i]=b[i];}
}
void ARRAY::show(){ //显示
for(int i=0;i<N;i++){cout<<arr[i]<<' ';}
cout<<endl;
}
void main(){
int d[10]={1,2,3,4,5,6,7,8,9,10};
int N=9;
ARRAY a(d,N);
ARRAY b;
a.show();
b.show();

b=a;            //赋值 ????????
cout<<"*************\n";
a.show();               //显示出错
b.show();
cout<<"*************\n";
a.setfirst(10);
a.show();
b.show();
cout<<"*************\n";
while(1);

}
重载=后显示如下
图片说明

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • threenewbee 2018-10-31 09:13
    已采纳
    // Q706325.cpp : Defines the entry point for the console application.
    //
    
    #include "stdafx.h"
    
    #include <iostream>
    using namespace std;
    
    class ARRAY{ //数组 类
    int N;
    int *arr;
    public:
    ARRAY();
    ARRAY(int *b,int m);
    ~ARRAY(){delete []arr;}
    void setfirst(int a){ *arr=a;}
    
    void show(); 
    ARRAY& operator=(ARRAY& b); //改这里
    };
    ARRAY& ARRAY::operator=(ARRAY& b){ // 重载 = 改这里
    N=b.N;
    arr=new int[N];
    for(int i=0;i<N;i++)
    arr[i]=b.arr[i];
    return *this;
    }
    ARRAY::ARRAY(){ //构造函数
    N=10;
    arr=new int[N];
    for(int i=0;i<N;i++){
    arr[i]=0;
    }
    }
    ARRAY::ARRAY(int *b,int m){ //构造函数
    N=m;
    arr=new int[N];
    for(int i=0;i<N;i++){
    arr[i]=b[i];}
    }
    void ARRAY::show(){ //显示
    for(int i=0;i<N;i++){cout<<arr[i]<<' ';}
    cout<<endl;
    }
    void main(){
    int d[10]={1,2,3,4,5,6,7,8,9,10};
    int N=9;
    ARRAY a(d,N);
    ARRAY b;
    a.show();
    b.show();
    b=a;            //赋值 ????????
    cout<<"*************\n";
    a.show();               //显示出错
    b.show();
    cout<<"*************\n";
    a.setfirst(10);
    a.show();
    b.show();
    cout<<"*************\n";
    while(1);
    }
    
    

    图片说明

    如果问题得到解决,请点我回答投票箭头下面的采纳

    打赏 评论

相关推荐 更多相似问题