文章目录

  • 1 继承关系中的拷贝构造函数和赋值操作重载函数分析

1 继承关系中的拷贝构造函数和赋值操作重载函数分析

在继承关系中,如果子类未实现拷贝构造函数,那么在子类进行拷贝构造操作时,会直接调用父类的拷贝构造函数,如果父类的拷贝构造函数是私有的,则会编译失败。我们有时候也会故意把父类的拷贝构造函数设置为私有的,从而禁止子类的拷贝构造操作。

在继承关系中,如果子类未实现赋值操作重载函数,那么在子类进行赋值操作时,会直接调用父类的赋值操作重载函数,如果父类的赋值操作重载函数是私有的,则会编译失败。我们有时候也会故意把父类的赋值操作重载函数设置为私有的,从而禁止子类进行赋值操作。

如下代码:

class A
{public:A(){cout << "A()" << endl;}A(const A& obj){cout << "A(const A& obj)" << endl;}A& operator = (const A& obj){cout << "A& operator = (const A& obj)" << endl;return *this;}
};class B : public A
{};int main()
{B b1;B b2(b1);b1 = b2;return 0;
}

输出结果:

一旦子类实现了拷贝构造函数,则在拷贝构造的时候会调用子类的拷贝构造函数和父类的构造函数。子类实现了赋值操作重载函数,则只会调用子类的。

代码如下:

class A
{public:A(){cout << "A()" << endl;}A(const A& obj){cout << "A(const A& obj)" << endl;}A& operator = (const A& obj){cout << "A& operator = (const A& obj)" << endl;return *this;}
};class B : public A
{public:B(){cout << "B()" << endl;}B(const B& obj){cout << "B(const B& obj)" << endl;}B& operator = (const B& obj){cout << "B& operator = (const B& obj)" << endl;return *this;}
};int main()
{B b1;B b2(b1);b1 = b2;return 0;
}

执行结果如下:

继承关系中的拷贝构造函数和赋值操作重载函数分析相关推荐

  1. C/C++中的拷贝构造函数和赋值构造函数

    代码: 1 #include <iostream> 2 #include <cstdio> 3 4 using namespace std; 5 6 class A{ 7 pu ...

  2. 类与对象:类的6个默认成员函数: 构造函数、析构函数、拷贝构造函数、赋值操作符重载、默认拷贝构造与赋值运算符重载的问题、const成员函数、 取地址及const取地址操作符重载

    1.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类.任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数. 构造函数 析构函数 拷贝构造函数 赋值操作符重载 const成员函数 ...

  3. const , 拷贝构造函数,赋值操作符重载

    int a1 = 0;const int b1 = 1;int* p0; // 普通指针const int* p1; // 可修改所指对象,但不可修改所指对象的值int const* p2; // 可 ...

  4. C++ 拷贝构造函数和赋值构造函数

    在C++中复制控制是一个比较重要的话题,主要包括复制构造函数.重载赋值操作符.析构函数这三部分,这三个函数是一致的,如果类需要析构函数,则它也需要复制操作符 和 复制构造函数,这个规则被称为 C++的 ...

  5. 构造函数、拷贝构造函数、赋值函数和析构函数

    文章目录 一.构造函数 1.认识构造函数 2.初始化列表 二.拷贝构造函数 1.类对象的拷贝 2.浅拷贝和深拷贝 三.赋值函数 四.析构函数 1.认识析构函数 2.销毁,清理? 3.析构函数来阻止该类 ...

  6. QObject 的拷贝构造和赋值操作

    QOject 中没有提供一个拷贝构造函数和赋值操作符给外界使用,其实拷贝构造和赋值的操作都是已经声明了的,但是它们被使用了Q_DISABLE_COPY () 宏放在了private区域.因此所有继承自 ...

  7. C++学习笔记-----在重载的赋值运算函数中调用拷贝构造函数

    类的拷贝构造函数与赋值运算不同,拷贝构造函数是对这个类进行初始化的过程,而赋值是删除原有的东西,赋予它新的东西. 但是二者在实现上是互通的. template<class T> graph ...

  8. c++ map 析构函数_C++|类继承关系中的虚函数、虚析构函数、虚基类

    在继承关系中,虚函数.虚析构函数.虚基类中使用的关键字virtual都是在告诉编译器,此处要进行特殊处理: 虚函数:函数重写时的要求编译器动态绑定来实现多多态 : 虚析构函数:当基类指针指向在堆内实现 ...

  9. 拷贝构造函数和赋值函数的一些知识

    /*******************拷贝构造函数和赋值运算符重载有以下两个不同之处***************************/ 1.拷贝构造函数生成新的类对象,而赋值运算符不能. 2. ...

最新文章

  1. 猫晚流量再创记录,阿里云直播方案护航优酷2500万用户体验
  2. MySQL的日志管理
  3. Kubernetes-Label
  4. 系统要不要更新_手机经常弹出“系统更新”,到底要不要更新?用户:后悔已来不及...
  5. [数论]莫比乌斯反演1
  6. 第一季3:HI3518E方案整体架构介绍(硬件和软件支持)
  7. python没有菜单栏_解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
  8. 2020中国信息流平台品牌服务价值分析
  9. 榨取kkksc03(洛谷-P1855)
  10. c语言2L,求助,R8C 2L 如何在C语言定位常数数组到绝对地址
  11. [Node.js] 模块化 -- path路径模块
  12. java 强制转换 效率_Java 性能优化:35 个小细节,让你提升 Java 代码的运行效率...
  13. android实现通知栏搜索功能,actionBar+SearchView实现搜索功能
  14. 北京大学生物信息学学习(6)隐含马尔可夫模型
  15. hive教程:启动hive客户端
  16. 2022国内十大工业级三维视觉引导企业一览
  17. 二十一条自动化测试过程中遭遇的问题及解决思路
  18. 优秀工程师应该具备哪些素质_优秀的工程师具有什么品质
  19. 去除带下划线的word文档答案
  20. JetBrains又出编程神器!

热门文章

  1. linux条件表达式例子,Linux的Iptables命令的基本知识(三)-常用匹配条件示例和执行动作...
  2. java单例注册表_Spring对单例的底层实现,单例注册表
  3. java 多线程共享数据_Java多线程学习:多个线程间共享数据
  4. 【PC工具】文件夹多文件群体比较工具beyond compare4
  5. nginx编译安装,nginx静态资源访问和负载均衡的使用!
  6. 【PC工具】Windows下用RaiDrive挂载各种网盘为本地硬盘,挂载Google Drive网盘为本地硬盘使用...
  7. zynq 文件系统中加载PL fpga.bit笔记
  8. shell编程基本语法
  9. CSS学习之多类别选择器
  10. CrazyWing:Python自动化运维开发实战 九、Python数据类型之列表