有关浅复制与深复制的定义为:对类进行复制的时候按位复制,即把一个对象各数据成员的值原样复制到目标对象中。当类中涉及到指针类型数据成员的时候,往往就会产生指针悬挂问题。
浅复制
看以下结构:
class A{
public:
int* a;
};
A a1;
A b1=a1;
b1=a1执行的是浅复制,此时a1.a和b1.a指向的是同一个内存地址,如果在析构函数里面有对内存的释放。就会出现内存访问异常。因为一块内存空间会被释放两次!
参考以下代码c_person.cpp理解:
#include <iostream>
#include <string.h>
using namespace std;
class person{
private:
char *name;
int age;
public:
person(const char *Name,int Age)
{
name=new char[strlen(Name)+1];
strcpy(name