对于拷贝构造函数,我在之前的博文中有提到过,但是有时候,浅拷贝和深拷贝真的很难理解,所以我们来谈谈拷贝构造函数的一些讨论.大家都知道拷贝构造函数分为浅拷贝和深拷贝。系统默认的拷贝构造函数是浅拷贝。默认的拷贝构造函数以内存拷贝的形式将旧对象的内存空间复制到新对象的内存空间中。如果类中有指针类型,默认的拷贝构造函数只能拷贝指针属性的值,不能拷贝指针属性指向的内存。这时候,如果我们不显式定义拷贝构造函数,那么我们在编程的时候,可能会出现很奇怪的问题。显式定义一个拷贝构造函数,完成指针属性等需要特殊处理的属性的拷贝工作。第一:先来看浅拷贝带来的问题--------------------我是分界线-------------------------#includeusingnamespacestd;classCar{私有:char*品牌;浮动价格;public:Car(constchar*sz,floatp){//在构造函数中为品牌分配内存brand=newchar[strlen(sz)+1];strcpy(品牌,深圳);}~Car{//在析构函数中释放申请的内存delete[]brand;cout<<"清除结束!"<#includeusingnamespacestd;classCar{私有:char*品牌;浮动价格;公共:汽车(constchar*sz,floatp){brand=newchar[strlen(sz)+1];strcpy(品牌,深圳);价格=p;}//自定义拷贝构造函数Car(constCar&cp){//重新创建brand和cp。与brand相同大小的内存空间brand=newchar[strlen(cp.brand)+1];//strcpy(brand,cp.brand);价格=cp.价格;}~Car(){删除[]品牌;cout<<"清除"<