当派生类定义了拷贝、赋值、移动操作时,该操作负责拷贝、赋值、移动包括基类部分成员在内的整个对象。

1.1 定义派生类的拷贝或移到构造函数

 class Base { /* ... */ };class D : public Base{public:// by default, the base class default constructor initializes// the base part of an object// to use the copy or move constructor, we must explicitly call that// constructor in the constructor initializer listD(const D& d) : Base(d)   // copy the base members/* initializers for members of D */ { /* ... */}D(D&& d) : Base(std::move(d))    // move the base members/* initializers for members of D */ { /* ... */}};

1.2 派生类赋值运算符

派生类的赋值运算符必须显式地为其基类部分赋值。

// Base::operator=(const Base&) is not invoked automatically
D &D::operator=(const D &rhs)
{Base::operator=(rhs);   // assigns the base part// assign the members in the derived class, as usual,// handling self-assignment and freeing existing resources as appropriatereturn *this;
}

1.3 派生类析构函数:派生类析构函数先执行,然后执行基类的析构函数。

如果构造函数或析构函数调用了某个虚函数,则应该执行与构造函数或析构函数所属类型相对应的虚函数版本。

【引用】

[1] 代码oopTest.h

C++ Primer 5th笔记(chap 15 OOP)派生类的拷贝控制成员相关推荐

  1. C++ Primer 5th笔记(chap 15 OOP)构造函数和拷贝控制

    1. 虚析构函数 基类通常应该定义一个虚析构函数. class Quote {public:// virtual destructor needed if a base pointer pointin ...

  2. C++ Primer 5th笔记(8)chapter8 类:IO库-string流

    sstream输入输出类继承自iostream类 . istringstream读取一个字符串 . ostringstream写入一个字符串 1. 可以使用iostream类的操作 sstream s ...

  3. C++ Primer 5th笔记(8)chapter8 类:IO库-文件流

    1.创建一个文件流 ifstream in(ifile);//打开文件 ofstream out;//不打开文件 2. 文件输入输出类继承自iostream类,可以使用iostream类的操作 fst ...

  4. C++ Primer 5th笔记(8)chapter8 类:IO库-流的缓冲区

    1. 介绍 • 每个输出流都管理一个缓冲区,用来保存程序读写的数据 • 操作系统就可以将程序的多个输出操作组合成单一的系统级写操作(提升性能,设备的写操作很耗时) 2. 缓冲区类型:全缓冲.行缓冲和不 ...

  5. C++ Primer 5th笔记(8)chapter8 类:IO库-流的状态

    1. 定义:流有状态,表示是否出错. eg. 通常在使用它时要测试它的状态: while (cin >> word) 注:只有在非错误状态下,stream才能被读写 2. 流的状态值 st ...

  6. C++ Primer 5th笔记(8)chapter8 类:IO库-总览

    IO库大致可操作三类数据: 控制台流(stream) , 文件(file) , 字符串 (string). 1. eg. cin -- 一个istream对象,从标准输入读取数据 (>>, ...

  7. C++ Primer 5th笔记(7)chapter7 类:类的静态成员

    ● 不能声明为const 的,而且也不能在static 函数体内使用this 指针 ● 在类外部定义静态成员,不能重复使用 static 关键字. void Account::rate(double ...

  8. C++ Primer 5th笔记(7)chapter7 类:字面值常量类

    1. 如果一个类不是聚合类,且符合: ● 数据成员都必须是字面值类型. ● 类必须至少含有一个constexpr构造函数 ● 如果一个数据成员含有类内初始值,则内置类型成员的初始值必须是一条常量表达式 ...

  9. C++ Primer 5th笔记(7)chapter7 类:构造函数、类类型转换、聚合类

    1. 构造函数 1.1构造函数的初始值有时是必须的(比如引用) 1.2 成员初始化的顺序 初始值列表只说明用于初始化成员的值,而不限定初始化的具体执行顺序, 因此构造函数初始化的值的顺序最好与成员声明 ...

最新文章

  1. redis list操作
  2. SDUT OJ[3109] 买买买 背包 dp
  3. 我有一段很厉害的代码,不外传的那种
  4. android markdown软件,安卓上的Markdown写作软件——Markdrop
  5. 服务器装系统就蓝屏,重装了下系统老是蓝屏
  6. C51单片机行人过马路按钮控制信号灯及Protues仿真(有缺陷)
  7. mysql从5.7平滑升级到8.0.27
  8. 谷歌 Google Custom Search 站内搜索功能
  9. WIFI驱动配置实战(Linux驱动开发篇)
  10. 关于 geodesic distance 的通俗解释
  11. 头条面试居然跟我扯了半小时的Semaphore
  12. i tell you 微软各种 操作系统 应用程序 开发工具 下载
  13. Alessandro De Luca 大神级任务广义动量应用于动力学解决方案
  14. openwrt nas_软路由NAS浅入浅出:收藏备用,玩转软路由、NAS的40个网站
  15. 【VMware vSAN 7.0】5.5 配置 vSAN 集群的许可证设置
  16. 【SPSS】单样本T检验分析详细操作教程(附案例实战)
  17. HTML期末大作业~清新手工肥皂网站展示4个页面(HTML+CSS+JavaScript+Bootstrap)
  18. 谱估计matlab,利用MATLAB工具箱比较三种谱估计算法
  19. LeetCode——Valid Parenthese
  20. Excel动态图表——滑动箭头图

热门文章

  1. 斗地主程序设计c语言,C语言斗地主游戏v0.1
  2. java程序死了telnet还有用吗_java实现telnet连接操作 改进
  3. android开发地址选择器,Android地址选择器 类似于京东的地址选择
  4. api zabbix 拓扑图 获取_Zabbix报表系统
  5. radio按扭设置只读_disabled属性样式问题
  6. mysql 数据类型 int_MySQL数据类型 int(M) 表示什么意思?
  7. AI:《DEEP LEARNING’S DIMINISHING RETURNS—深度学习的收益递减》翻译与解读
  8. SLAM:SLAM相机简介、SLAM五步流程简介(VO+BEO+LCD+M)之详细攻略
  9. RL之Q Learning:利用强化学习之Q Learning实现走迷宫—训练智能体走到迷宫(简单迷宫)的宝藏位置
  10. as3.0用了视频组件,导致视频打开后就全屏,加一下代码就行