从汇编的眼光看C++(之指针拷贝) (二)

2014-11-24 12:43:51 · 作者: · 浏览: 1
if(value)

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函数解可以正常编译通过,没有问题