c++面向对象高级编程 学习五 组合、委托与继承
组合 composition 表示has a
queue类中有一个deque容器,这种关系叫做 组合
queue中的六个函数都是调用c的函数完成的
template <class T>
class queue {...
protected:
deque<T> c; // 底層容器
public:
// 以下完全利用 c 的操作函數完成
bool empty() const { return c.empty(); }
size_type size() const { return c.size(); }
reference front() { return c.front(); }
reference back() { return c.back(); }
//
void push(const value_type& x) { c.push_back(x); }
void pop() { c.pop_front(); }
};
图中黑色表示组合,白色表示委托
构造由内而外,析构由外而内
委托 Delegation
String类中有一个指针指向StringRep,这种关系叫 委托
继承 inheritance 表示 is a
构造先构造父类,再构造子类
析构先析构子类,再析构父类
c++面向对象高级编程 学习五 组合、委托与继承相关推荐
- c++面向对象高级编程 学习十五 组合继承关系下的构造和析构
文章目录 继承关系 组合关系 继承和组合 继承关系 构造由内而外,析构由外而内,内即是父类 组合关系 A拥有B, 构造由内而外,析构由外而内,内即是B 继承和组合 构造和析构顺序如图:
- c++面向对象高级编程 学习十七 const, new, delete
文章目录 常量成员函数 new和delete 常量成员函数 常量成员函数是不改变成员数据. 当成员函数的const和non-const版本同时存在时,const object只能调用const版本,n ...
- c++面向对象高级编程 学习十六 vptr和vtbl
当一个类中有一个或多个虚函数时,内存中会多一个虚指针(vptr,virtual pointer),指向一个虚表(vtbl,virtual table) 父类有虚函数,则子类一定有虚函数 在下图示意图中 ...
- c++面向对象高级编程 学习十四 引用
文章目录 reference reference的常见用途 reference 变量有三种形式:值,指针,引用 int x=0; //值 int* p=&x;//指向整型的指针,地址,指针在之 ...
- c++面向对象高级编程 学习十三 数量不定的模板参数,auto,for
文章目录 数量不定的模板参数 auto ranged-base for 数量不定的模板参数 void print() {} //... 表示参数的数量不定 template<typename T ...
- c++面向对象高级编程 学习十二 模板
模板特化: 模板是一种泛化的形式,特化是将参数类型进行指定,写出特化的版本,当在调用下图cout<<hash()(1000);的时候,由于特化中有struct hash{ }的版本,因此会 ...
- c++面向对象高级编程 学习十一 类模板、函数模板、成员模板
namespace经验谈: 团队中函数或类的名字可能会冲突,因此使用namespace进行区分. 类模板: template<typename T> 函数模板: template<c ...
- c++面向对象高级编程 学习十 function-like classes
本节是设计一个class,使它的行为像一个函数. 如果一个东西能接受小括号()操作符,那么这个东西就称之为函数,或像函数的东西. 下图为三个函数对()的重载,这三个类均为像函数的类,它们可接受()操作 ...
- c++面向对象高级编程 学习九 pointer-like classes
c++的class设计出来有两种形式,一种像指针,一种像函数 智能指针里包含普通指针,要写 * 和 -> 的函数 sp->method(); //sp-> 经 T* operator ...
最新文章
- 晕死!博客园把我搞晕了!
- Spring Web Application Security
- 日常生活小技巧 -- 名词
- 什么是JavaConfig
- 简述python定义中的五个要点_Python基础知识复习
- ipa解包打包工具_ios打包ipa的四种实用方法(.app转.ipa)
- python是免费的、开源的、跨平台的_NovalIDE是一款开源,跨平台,而且免费的国产Python IDE。...
- 讨教大学|FMEA成功实施的关键是什么?
- JAVA-反射面试题及答案
- 数学建模之初等模型详解
- 贝茨视觉训练法 (Dr William Bates)方法
- WIN10 下 autocad2006 及其他版本打开文件多窗口不能一个窗口的解决办法
- win10便签常驻桌面_有没有比较好用的电脑桌面待办事项软件?桌面便签可以了解一下...
- 数据结构与算法 python版 之 递归三定律
- 零知识证明 - bellman源码分析
- matlab spline三次样条插值x,Spline(三次样条插值)
- 多机器人路径规划CBS/ECBS等 libmultiRobotPlanning 代码阅读笔记
- Redis启动窗口一闪就关
- 串的置换操作Replace(S,T,V)的算法
- 用python玩转数据第一周答案_用Python玩转数据_答案
热门文章
- linux 故障注入_用软件中断实现的Linux内核故障注入方法
- 【转】浅谈TDD、BDD、ATDD、DDD的区别
- 【转】刨根究底字符编码之七——ANSI编码与代码页
- ASP.Net请求处理机制初步探索之旅 - Part 4 WebForm页面生命周期
- linux系统管理Linux系统实验,实验三 linux系统管理
- VS静态库和动态库的区别
- 【Python学习】 - TensorFlow.keras 不显示epochs进度条的方法
- 【PTA天梯赛CCCC -2017决赛L2-4】部落 (25 分)(图染色)
- 【HDU - 6290】 奢侈的旅行 (对题目预处理 + DIjkstra最短路)
- 描写火车站场景_关于描写火车站的句子