在我的代码中有 operator+ 重载。在这个范围内,我定义了 object ans
,我想构建并返回它,但似乎析构函数ans
在我返回它之前就已经解构了,所以这个方法返回了一些未定义的值。
我不明白我错在哪里?是析构函数,构建函数,还是在我的 operator+ 重载中?
这是我的代码:
class vector1{
int * arr;
int size;
public:
//constructors
vector1(){}
vector1(int n){
size=n;
arr= new int[size];
}
//functions
int get_size(){return size;}
void init(){ //initialize all array cells to 0
for(int i=0;i<size;i++)
arr[i]=0;
}
int get_value_in_index(int index){
return arr[index];
}
void set_value_in_index(int i, int num){
arr[i]=num;
}
int & operator[](int i){
int default_val=0;
if (i<0 || i>size){
cout<<"index not valid"<<endl;
return default_val;
}
return arr[i];
}
vector1 operator+(vector1 & ob);
//destructor
~vector1(){
delete [] arr;
}
};
vector1 vector1:: operator+(vector1 & ob){
vector1 ans(size);
if (ob.get_size()!=size){ //if the arrays are not the same size return array of '0', this array size
cout<<"vectors not the same length. can't sum them"<<endl;
//test
//exit(1);
ans.init();
}
else{
for (int i=0;i<size;i++)
ans.set_value_in_index(i,arr[i]+ob.get_value_in_index(i));
}
return ans;
}
感谢您的时间和帮助。