free(value);
}
};
class data
{
int* value;
data(const data&) ;
public:
data(int num){
if(num > 0)
value = (int*)malloc(sizeof(int)* num);
}
~data(){
if(value)
free(value);
}
}; (2)编写拷贝构造函数,进行内存深复制
class data
{
int* value;
int number;
public:
data(int num){
if(num > 0)
value = (int*)malloc(sizeof(int)* num);
number = num;
}
data(const data& d){
if(NULL != d.get_ptr())
value = (int*) malloc(sizeof(int)* d.get_number());
number = d.get_number();
memmove(value, d.get_ptr(), sizeof(int)* number);
}
~data(){
if(value)
free(value);
}
int* get_ptr() const{ return value;}
int get_number() const {return number;}
};
class data
{
int* value;
int number;
public:
data(int num){
if(num > 0)
value = (int*)malloc(sizeof(int)* num);
number = num;
}
data(const data& d){
if(NULL != d.get_ptr())
value = (int*) malloc(sizeof(int)* d.get_number());
number = d.get_number();
memmove(value, d.get_ptr(), sizeof(int)* number);
}
~data(){
if(value)
free(value);
}
int* get_ptr() const{ return value;}
int get_number() const {return number;}
}; 我们看到,经过拷贝构造函数的定义后,原来的process函数解可以正常编译通过,没有问题