赋值运算符和复制构造函数的区别

赋值运算符和复制构造函数都是用已存在的B对象来创建另一个对象A。不同之处在于:赋值运算符处理两个已有对象,即赋值前B应该是存在的;复制构造函数是生成一个全新的对象,即调用复制构造函数之前A不存在。 
CTemp a(b); //复制构造函数,C++风格的初始化 
CTemp a=b; //仍然是复制构造函数,不过这种风格只是为了与C兼容,与上面的效果一样 
在这之前a不存在,或者说还未构造好。

CTemp a; 
a=b; //赋值运算符 
在这之前a已经通过默认构造函数构造完成。

实例总结:

重点:包含动态分配成员的类 应提供拷贝构造函数,并重载"="赋值操作符。

以下讨论中将用到的例子:

class CExample 

public: 
CExample(){pBuffer=NULL; nSize=0;} 
~CExample(){delete pBuffer;} 
void Init(int n){ pBuffer=new char[n]; nSize=n;} 
private: 
char *pBuffer; //类的对象中包含指针,指向动态分配的内存资源 
int nSize; 
};

这个类的主要特点是包含指向其他资源的指针。

pBuffer指向堆中分配的一段内存空间。

引用:http://www.cnblogs.com/fairycao/archive/2009/12/16/1625408.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值