C++复制构造函数和赋值符的区别
2015-06-14 20:42
288 查看
C++复制构造函数和赋值符的区别:/article/2506208.html
拷贝构造函数和赋值符函数:http://www.cnblogs.com/dwdxdy/archive/2012/07/17/2594993.html
!!!!以上这两篇文章讲的比较好,值得细细的去看。
复制构造函数与赋值操作符之间的区别
复制构造函数又称拷贝构造函数,它与赋值操作符间的区别体现在以下几个方面
1.从概念上区分:
复制构造函数是构造函数,而赋值操作符属于操作符重载范畴,它通常是类的成员函数
2.从原型上来区分:
复制构造函数原型ClassType(const ClassType &);无返回值
赋值操作符原型ClassType& operator=(const ClassType &);返回值为ClassType的引用,便于连续赋值操作
3.从使用的场合来区分:
复制构造函数用于产生对象,它用于以下几个地方:函数参数为类的值类型时、函数返回值为类类型时以及初始化语句,例如(示例了初始化语句,函数参数与函数返回值为类的值类型时较简单,这里没给出示例)
ClassType a; //
ClassType b(a); //调用复制构造函数
ClassType c = a; //调用复制构造函数
而赋值操作符要求‘=’的左右对象均已存在,它的作用就是把‘=’右边的对象的值赋给左边的对象
ClassType e;
Class Type f;
f = e; //调用赋值操作符
4.当类中含有指针成员时,两者的意义有很大区别
复制构造函数需为指针变量分配内存空间,并将实参的值拷贝到其中;而赋值操作符它实现的功能仅仅是将‘=’号右边的值拷贝至左值,在左边对象内存不足时,先释放然后再申请。当然赋值操作符必须检测是否是自身赋值,若是则直接返回当前对象的引用而不进行赋值操作
拷贝构造函数和赋值符函数:http://www.cnblogs.com/dwdxdy/archive/2012/07/17/2594993.html
!!!!以上这两篇文章讲的比较好,值得细细的去看。
复制构造函数与赋值操作符之间的区别
复制构造函数又称拷贝构造函数,它与赋值操作符间的区别体现在以下几个方面
1.从概念上区分:
复制构造函数是构造函数,而赋值操作符属于操作符重载范畴,它通常是类的成员函数
2.从原型上来区分:
复制构造函数原型ClassType(const ClassType &);无返回值
赋值操作符原型ClassType& operator=(const ClassType &);返回值为ClassType的引用,便于连续赋值操作
3.从使用的场合来区分:
复制构造函数用于产生对象,它用于以下几个地方:函数参数为类的值类型时、函数返回值为类类型时以及初始化语句,例如(示例了初始化语句,函数参数与函数返回值为类的值类型时较简单,这里没给出示例)
ClassType a; //
ClassType b(a); //调用复制构造函数
ClassType c = a; //调用复制构造函数
而赋值操作符要求‘=’的左右对象均已存在,它的作用就是把‘=’右边的对象的值赋给左边的对象
ClassType e;
Class Type f;
f = e; //调用赋值操作符
4.当类中含有指针成员时,两者的意义有很大区别
复制构造函数需为指针变量分配内存空间,并将实参的值拷贝到其中;而赋值操作符它实现的功能仅仅是将‘=’号右边的值拷贝至左值,在左边对象内存不足时,先释放然后再申请。当然赋值操作符必须检测是否是自身赋值,若是则直接返回当前对象的引用而不进行赋值操作
相关文章推荐
- (C++)C++多态性中的静态绑定和动态绑定
- The partial sum problem
- 初窥c++11:lambda函数及其用法
- C语言 逻辑短路
- 【c++】输出 0000,0001,0002,0003,0004...这样的字符串
- zerglurker的C语言教程010——运算符详解(二)
- c++ multimap multiset
- zerglurker的C语言教程009——运算符详解(一)
- C++得到最大的int值
- c++ list, vector,deque, map,set 区别与用法比较
- C++ 多态的原理
- C++ 容器元素的存储和获取
- 【C++沉思录】代理类
- c++ const关键字总结
- 【学习笔记】【C语言】break和continue
- LeetCode || 3Sum
- 《爱编程,爱c++-十六期-多态》
- 一个VC++ MFC播放器代码文件
- C++ 使用VS2010创建MFC ActiveX工程项目
- c语言10个经典小程序