问题遇到的现象和发生背景
请问各位朋友们,为什么我的析构函数只调用1次呢,A,B应该各一次才对,用的是DEV++
问题相关代码,请勿粘贴截图
#include<iostream>
using namespace std;
class Array2 {
private:
int r;
int c;
int **array;
public:
Array2 (){
}
Array2 (int row,int colume); //在外面写函数主体的时候,不用加{},直接加:
~Array2()
{
if(array)
{
cout<<"deconstructor called!"<<endl;
for(int i=0;i<r;++i)
{
delete [] array[i];
}
delete [] array;
}
}
int * operator [] (int & i);
int & operator () (int & i,int & j);
Array2 & operator = ( Array2 & ar);
void setR(int row){
r=row;
}
void setC(int colume){
c=colume;
}
int getR() {
return r;
}
int getC() {
return c;
}
int** getArray() {
return array;
}
};
Array2 & Array2:: operator = ( Array2 & ar){ //这里是构造函数(复制构造函数),不是赋值函数,要像构造函数那样写
//Array2 a1(ar.getR(),ar.getC());
//return a1;
r=ar.getC();
c=ar.getR();
array=ar.getArray();
return *this;
}
int & Array2:: operator () (int & i,int & j){
return array[i][j];
}
int * Array2:: operator [] (int & i){
//return a[i];
return array[i];
}
Array2:: Array2(int row,int colume ):r(row),c(colume)
{
array=new int*[r];
for(int i=0;i<r;i++){
array[i]=new int[c];
}
}
int main()
{
Array2 a(3,4);
int i,j;
for(i=0;i<3;++i)
{
for(j=0;j<4;j++)
{
a[i][j]=i*4+j;
}
}
for(i=0;i<3;++i)
{
for(j=0;j<4;++j)
cout<<a(i,j)<<",";
cout<<endl;
}
cout<<"next"<<endl;
Array2 b;
b=a;
for(i=0;i<3;++i)
{
for(j=0;j<4;++j)
cout<<b(i,j)<<",";
cout<<endl;
}
return 0;
}