代理类
面向对象编程主要关注继承、动态绑定。
继承是一种抽象,允许程序员可以在某种时刻忽略相似对象间的差异,又在其他时候利用这些差异
在将继承和容器共用时,需要处理的问题是:控制内存分配,把不同类型的对象放入同一个容器。
这时我们需要一个代理类,这个类的每个对象可以代理基类及其任何子类的对象,但这个代理类我们不想再写出多个子类,只一个基类就可以实现所有功能
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届求职-...
【资源说明】2024届求职C++后端-学习笔记-操作系统、计算机网络、C++语言+算法面试笔试资源.zip2024届求职C++后端-学习笔记-操作系统、计算机网络、C++语言+算法面试笔试资源.zip2024届求职C++后端-学习笔记-操作...
- C++标准库提供了大量预定义的类和函数,如输入/输出流、容器、算法、智能指针等,这些都是C++编程的基础。 - 2015至2019年间,C++标准库随着C++11、C++14和C++17新标准的引入,增加了许多新功能和改进,例如,...
C++非常实用-学习-总结-笔记-.pdf
结构型模式如适配器模式(Adapter)、装饰器模式(Decorator)和代理模式(Proxy),则关注如何组合和连接类与对象,以达到新的功能。行为型模式如观察者模式(Observer)、策略模式(Strategy)和访问者模式...
c++设计模式--基于Qt4开源跨平台开发框架(源代码)c++设计模式--基于Qt4开源跨平台开发框架(源代码)c++设计模式--基于Qt4开源跨平台开发框架(源代码)c++设计模式--基于Qt4开源跨平台开发框架(源代码)c++设计模式--...
Visual C++实践与提高-COM和COM+篇(高清pdf + 随书源代码).part2,很好的COM技术学习资料
Microsoft Visual C++ 2010 x86 Runtime - 10.0.40219 Microsoft Visual c + + 2010年可再发行组件包安装 Visual c + + 库运行在没有安装 Visual c + + 2010年的计算机上与 Visual c + + 开发的应用程序所需的运行时...
【标题】"我的笔记-qt-c++-c#-后面持续更新.7z" 提供了几个关键领域:Qt、C++和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-...
11.2.7 远程创建DLL组件:代理进程(surrogate) 11.2.8 IUnknown优化 11.2.9 DCOM安全机制 11.3 DCOM组件的开发与部署 11.3.1 基于NT服务的DCOM服务器——例程DCOMServ 11.3.2 测试服务程序 11.3.3 DCOMCNFG实用...
算法I-IV (C++实现)---带目录.part5
warning: gcc-c++-4.4.7-3.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY error: Failed dependencies: gcc = 4.4.7-3.el6 is needed by gcc-c++-4.4.7-3.el6.x86_64 libstdc++ = 4.4.7-...
### C++ 学习笔记精华版 #### 一、C++ 语言概述 **1、历史背景** - **C++ 的江湖地位** - Java、C、C++、Python、C# 是当前主流的编程语言之一,而 C++ 在这些语言中以其高效性和灵活性著称。 - **C++ 之父 ...
《C++20设计模式》学习笔记-第12章代理模式-配套代码
内容是C++面对对象的,目录大致来源于菜鸟文档的C++面向对象,笔记是参考各种文章以及菜鸟文档改编的,内容包含C++类和对象(类定义和对象定义,类成员函数,类访问修饰符,友元函数,内联函数,this指针,静态成员...
C++版本Savitzky-Golay 滤波器,包括序列噪声去除与插值等等。
随着面向对象程序设计思 想的日益普及,很多支持面向 对象程序设计方法语言也相继 出现了,C++就是这样一种语 言。C++是Bjarne Stroustrup 于1980年在AT&T的贝尔实验 室开发的一种语言。