当前位置: 首页 > news >正文

侯捷 C++面向对象编程笔记——9 复合 委托

9 复合 委托

9.1 Composition 复合

类似于c中结构里有结构——class里有class

image-20230801093748678

deque 是一个已经存在的功能很多的类(两头进出的队列);利用deque的功能来实现queue的多种操作

该例只是复合的一种情况——设计模式 Adapter

9.1.1 复合下的构造和析构

image-20230801095529359
  • 构造是由内而外

    Container 的构造函数,编译器会自动先调用 Component 的 default 构造函数,再执行自己

    注意如果要调用 Component 的其他构造函数需要自己写出来

    Container::Container(…): Component() { … };

  • 析构是由外而内

    Container 的析构函数会先执行自己,之后编译器调用 Component 的析构函数

9.2 Delegation 委托

委托就是 Composition by reference;即通过指针把任务委托给另一个类

复合中,内部和外部是一起出现的;而委托是不同步的

这是一个著名的设计模式——pimpl (pointer to implementation) 或者叫 “编译防火墙”

  • 右边怎么变动都不会影响左边

  • reference counting 多个指针共享一个 “Hello”;但当a要改变内容时, 系统会单独复制一份出来给a来改,b和c依然在共享

    image-20230801101907977

http://www.lryc.cn/news/112229.html

相关文章:

  • 状态模式——对象状态及其转换
  • Linux一阶段复习
  • 宝塔Linux面板怎么升级?升级命令及失败解决方法
  • 前端面试的性能优化部分(6)每天10个小知识点
  • 2023年 Java 面试八股文(20w字)
  • 银河麒麟服务器ky10-server在线一键安装docker
  • spring boot中web容器配置
  • DNSlog注入(利用DNSlog平台将SQL盲注变成回显注入)
  • vim学习笔记(致敬vim作者)
  • 力扣 -- 139. 单词拆分
  • 百度秋招攻略,百度网申笔试面试详解
  • nohup Java -jar 生成的nohup.out 文件一直增加,如何处理
  • 静态页面与动态页面的区别及部署jpress应用
  • 华为数通HCIA-华为VRP系统基础
  • 基于Azure OpenAI Service 的知识库搭建实验⼿册
  • 第七节--结构体
  • Docker学习(二十四)报错速查手册
  • 一种SpringBoot下Scheduler定时任务优雅退出方案
  • DNS部署与安全详解(上)
  • 【51单片机】晨启科技,酷黑版,音乐播放器
  • 基于SPSSPRO实现层次分析法(AHP)
  • Spring Test中使用MockMvc进行上传文件单元测试时,报NullPointerException
  • HTTP常用状态码及其含义
  • FFmpeg中AVIOContext的使用
  • 【react】react中BrowserRouter和HashRouter的区别:
  • 机器学习常用Python库安装
  • HTTP 劫持、DNS 劫持与 XSS
  • bash引用-Quoting详细介绍
  • powershell几句话设置环境变量
  • Javascript 数据结构[入门]