C++派生类和赋值运算符
前面提到过,派生类的默认复制构造函数会调用基类的复制构造函数,以对派生类对象中的基类对象进行初始化。
如果基类重载了赋值运算符
CBase::copy constructor called
CBase::opeartor = called
如果基类重载了赋值运算符
=
而派生类没有,那么在派生类对象之间赋值,或用派生类对象对基类对象进行赋值时,其中基类部分的赋值操作是调用被基类重载的=
完成的。例如下面的程序:
#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
所有教程
- socket
- Python基础教程
- C#教程
- MySQL函数
- MySQL
- C语言入门
- C语言专题
- C语言编译器
- C语言编程实例
- GCC编译器
- 数据结构
- C语言项目案例
- C++教程
- OpenCV
- Qt教程
- Unity 3D教程
- UE4
- STL
- Redis
- Android教程
- JavaScript
- PHP
- Mybatis
- Spring Cloud
- Maven
- vi命令
- Spring Boot
- Spring MVC
- Hibernate
- Linux
- Linux命令
- Shell脚本
- Java教程
- 设计模式
- Spring
- Servlet
- Struts2
- Java Swing
- JSP教程
- CSS教程
- TensorFlow
- 区块链
- Go语言教程
- Docker
- 编程笔记
- 资源下载
- 关于我们
- 汇编语言
- 大数据
- 云计算
- VIP视频