代理类
面向对象编程主要关注继承、动态绑定。
继承是一种抽象,允许程序员可以在某种时刻忽略相似对象间的差异,又在其他时候利用这些差异
在将继承和容器共用时,需要处理的问题是:控制内存分配,把不同类型的对象放入同一个容器。
这时我们需要一个代理类,这个类的每个对象可以代理基类及其任何子类的对象,但这个代理类我们不想再写出多个子类,只一个基类就可以实现所有功能
class VehicleSurrogate
{
public
VehicleSurrogate();
VehicleSurrogate(const Vehicle&);
~VehicleSurrogate();
VehicleSurrogate(const VehicleSurrogate&);
VehicleSurrogate& operator=(const VehicleSurrogate&);
private:
Vehicle* vp;/定义一个基类指针成员变量
}
所有对代理的操作都转换为对基类指针的操作,所有需要调用方法都需要定义成virtual的,这样才可以通过基类的指针来调用。
基类定义一个copy()方法
virtual Vehicle* copy() const=0;
在子类中实现
Vehicle* Truck::copy() const
{
return new Truck(*this);
}
这个方法可以保证可以复制一个基类指针会真正复制一个子类对象。
VehicleSurrogate::VehicleSurrogate(const VehicleSurrogate& v) : vp(v.vp? vp->copy():0){}
这样定义了一个VehicleSurrogate这样的代理类后,我们可以这样定义一个停车场parking_lot,它是一个数组
VehicleSurrogate parking_lot[1000]
Automobile x;
parking_lot[num++] = x;或parking_lot[num++] = VehicleSurrogate(x);
分享到:
相关推荐
《C++沉思录》--十年编程生涯的真知灼见
2024届求职-C++后端-学习笔记-操作系统、计算机网络、C++语言+算法 2024届求职-C++后端-学习笔记-操作系统、计算机网络、C++语言+算法 2024届求职-C++后端-学习笔记-操作系统、计算机网络、C++语言+算法 2024届求职-...
C++笔记 --- 类与结构 博客园大牛
Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-C++Dev-...
C++学习笔记--函数指针 函数指针 程序运行期间。每个函数都会占用一段连续的内存空间。而函数名就是该函数所占内存区域的起始地址(也称“入口地址”)。我们可以将函数入口地址赋给一个指针变量,使该指针变量...
C++11学习笔记 - 字串数据类型 希望你觉得有用
C++-帮助C++-帮助C++-帮助C++-帮助C++-帮助C++-帮助C++-帮助C++-帮助C++-帮助C++-帮助C++-帮助
C++非常实用-学习-总结-笔记-.pdf
这个C++笔记还是04年上学的时侯记的,当时还只手记到笔记本上的,原先以为以候再也用不到了,没想到过了这么多年,要做QT开发了,顺便温习一下当初学的吧,所以就把原先的笔记整理成了电子版的,希望对学习C++的能有...
C++设计模式--基于Qt4开源跨平台开发框架
VS2013调试,可以直接运行。由几个例子组成,备份留作以后查看。
C++11学习笔记 - 字串数据类型希望你觉得有用
c++设计模式--基于Qt4开源跨平台开发框架(源代码)c++设计模式--基于Qt4开源跨平台开发框架(源代码)c++设计模式--基于Qt4开源跨平台开发框架(源代码)c++设计模式--基于Qt4开源跨平台开发框架(源代码)c++设计模式--...
暗黑风格-C++八股文-v1.0.pdf暗黑风格-C++八股文-v1.0.pdf暗黑风格-C++八股文-v1.0.pdf暗黑风格-C++八股文-v1.0.pdf暗黑风格-C++八股文-v1.0.pdf暗黑风格-C++八股文-v1.0.pdf暗黑风格-C++八股文-v1.0.pdf暗黑风格-...
c++运行库2015-2019
包含所有core C++ 所有语法和技术点讲解,比较形象,文档整理的很好,希望对大家学习C++有帮助
--生日排序C++代码----生日排序C++代码----生日排序C++代码----生日排序C++代码----生日排序C++代码----生日排序C++代码----生日排序C++代码----生日排序C++代码----生日排序C++代码----生日排序C++代码----生日排序...
Microsoft Visual C++ 2010 x86 Runtime - 10.0.40219 Microsoft Visual c + + 2010年可再发行组件包安装 Visual c + + 库运行在没有安装 Visual c + + 2010年的计算机上与 Visual c + + 开发的应用程序所需的运行时...
Visual C++实践与提高-COM和COM+篇(高清pdf + 随书源代码).part1,学习COM技术的很好资料