C++派生类和赋值运算符
发布时间:2020-12-16 07:41:57 所属栏目:百科 来源:网络整理
导读:前面提到过,派生类的默认复制构造函数会调用基类的复制构造函数,以对派生类对象中的基类对象进行初始化。 如果基类重载了赋值运算符 = 而派生类没有,那么在派生类对象之间赋值,或用派生类对象对基类对象进行赋值时,其中基类部分的赋值操作是调用被基类重
前面提到过,派生类的默认复制构造函数会调用基类的复制构造函数,以对派生类对象中的基类对象进行初始化。 如果基类重载了赋值运算符 = 而派生类没有,那么在派生类对象之间赋值,或用派生类对象对基类对象进行赋值时,其中基类部分的赋值操作是调用被基类重载的= 完成的。例如下面的程序:
#include <iostream> using namespace std; class CBase { public: CBase() {} CBase(CBase & c) { cout << "CBase::copy constructor called" << endl; } CBase & operator = (const CBase & b) { cout << "CBase::opeartor = called" << endl; return *this; } }; class CDerived : public CBase {}; int main() { CDerived d1,d2; CDerived d3(d1); //d3初始化过程中会调用CBase类的复制构造函数 d2 = d1; //会调用CBase类重载的“=”运算符 return 0; }程序的输出结果是: CBase::copy constructor called CBase::opeartor = called (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 为什么 NSLog 不支持 Swift 对象
- c# – BackgroundWorker和Timer,只读取日志文件的新行?
- objective-c – 具有令牌的NSTextView
- c# – Git反向提交SourceTree中的推送合并
- c# – 无法从’System.Collections.Generic.IEnumerable’转
- c – 显式拷贝构造函数和std :: sort
- ruby-on-rails – ‘= undefined方法`build’中的rspec-rai
- 混合开发的大趋势之一React Native TextInput (文本输入)
- 如何存储Dijkstra算法的相邻节点?
- 转换和字节顺序