#include<iostream>
using namespace std;
class Set
{private:
int *array;
int size;
int maxsize;
public:
void Initial_a_set(const int* arr,int length);
Set& a();
int Show_set();
Set()
{array=new int[20];
size = 0;
maxsize = 20;
}
Set(const Set& set);
~Set()
{if(array) delete []array;
array=NULL;
size = 0;
maxsize = 0;
}
};
Set::Set(const Set& set)
{size = set.size;
array = new int[set.maxsize];
for(int i = 0;i<size;i++)
array[i] = set.array[i];
maxsize = set.maxsize;
}
void Set:: Initial_a_set(const int* arr,int length)
{
size = length;
for(int i = 0;i<size;i++)
array[i] = arr[i];
}
Set& Set::a()
{
return *this;
}
int Set:: Show_set()
{if(!array) return 0;
for(int i = 0;i<size;i++)
cout<<array[i];
return 1;
}
int main()
{int c2[10]={0,1,2,3,4,5,6,7,8,9};
//int c1[9]={0,1,2,3,4,5,6,7,8};
Set b,c,a1;
b.Initial_a_set(c2,10);
//c.Initial_a_set(c1,9);
a1=b.a();
a1.Show_set(); //错误在这里,调试发现a1对象里的array和b对象里的array是指向同一 个内存单元的,当调用他们的析构函数时,重复的删除同一个空间, 该 如何修改呢
return 0;
}
using namespace std;
class Set
{private:
int *array;
int size;
int maxsize;
public:
void Initial_a_set(const int* arr,int length);
Set& a();
int Show_set();
Set()
{array=new int[20];
size = 0;
maxsize = 20;
}
Set(const Set& set);
~Set()
{if(array) delete []array;
array=NULL;
size = 0;
maxsize = 0;
}
};
Set::Set(const Set& set)
{size = set.size;
array = new int[set.maxsize];
for(int i = 0;i<size;i++)
array[i] = set.array[i];
maxsize = set.maxsize;
}
void Set:: Initial_a_set(const int* arr,int length)
{
size = length;
for(int i = 0;i<size;i++)
array[i] = arr[i];
}
Set& Set::a()
{
return *this;
}
int Set:: Show_set()
{if(!array) return 0;
for(int i = 0;i<size;i++)
cout<<array[i];
return 1;
}
int main()
{int c2[10]={0,1,2,3,4,5,6,7,8,9};
//int c1[9]={0,1,2,3,4,5,6,7,8};
Set b,c,a1;
b.Initial_a_set(c2,10);
//c.Initial_a_set(c1,9);
a1=b.a();
a1.Show_set(); //错误在这里,调试发现a1对象里的array和b对象里的array是指向同一 个内存单元的,当调用他们的析构函数时,重复的删除同一个空间, 该 如何修改呢
return 0;
}