C++中复制构造函数与重载赋值操作符的深入分析
要的。
这时候是否发现与前面的问题关联起来了?
这时候我们发现对于一个类而言,为什么复制构造函数和重载赋值操作符这么重要了。因为这两个函数都是接受一个基类的引用,根据前面的分析我们知道一个基类引用完全可以绑定一个派生类的对象,而派生类对象中又包含了一个基类对象的基本信息。我们能够实现一个从一个派生对象到基类的构造过程。
我们用一个基类引用绑定一个派生对象,然后采用基类引用对基类成员进行访问,完成了一个基类对象基本要素的填充操作,相当于完成了基类对象的创建,也就是构造问题。这样也就能完成由派生类对象到基类对象的构造过程。
至于为什么是一个const的引用,我认为主要是因为不去修改派生类对象和扩大能够接受的参数情况,由const引用可以绑定不同类型的对象特性,说明const引用会扩大接受实参的能力。
现在我可以总结起来说了,因为在复制构造函数中,C++中的基类引用可以绑定一个派生类的对象,如果在允许访问的情况下,采用基类引用可以访问基类的成员以及派生类的其他成员,采用引用可以复制派生类对象中基类成员的值到新创建的基类成员中,完成一个基类成员数据的填充操作,这时候一个完整的基类对象就创建完成了。
重载赋值操作符则是发生在使用一个派生对象来赋值一个基类对象时,这时候也是const基类引用绑定一个派生类对象,然后复制对应的基类成员到基类对象对于的成员中,完成一个基类对象成员的更新操作。
来说,复制构造函数不仅仅实现了同类型之间的初始化操作,同时也完成了采用一个派生类对象初始化一个基类对象的操作,重载赋值操作符实现了同类型之间的赋值操作,也完成了采用派生类对象赋值基类对象的操作。如果没有这两个函数的存在,也就不能完成派生类到基类的赋值和初始化操作。这也是为什么一定会存在这两个函数的原因。
C++构造函数重载赋值操作 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)