代理类
面向对象编程主要关注继承、动态绑定。
继承是一种抽象,允许程序员可以在某种时刻忽略相似对象间的差异,又在其他时候利用这些差异
在将继承和容器共用时,需要处理的问题是:控制内存分配,把不同类型的对象放入同一个容器。
这时我们需要一个代理类,这个类的每个对象可以代理基类及其任何子类的对象,但这个代理类我们不想再写出多个子类,只一个基类就可以实现所有功能
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++语言+算法面试笔试资源.zip2024届求职C++后端-学习笔记-操作系统、计算机网络、C++语言+算法面试笔试资源.zip2024届求职C++后端-学习笔记-操作...
C++非常实用-学习-总结-笔记-.pdf
If you program in C++ you've been neglected. Test-driven development (TDD) is a modern software development practice that can dramatically reduce the number of defects in systems, produce more ...
结构型模式如适配器模式(Adapter)、装饰器模式(Decorator)和代理模式(Proxy),则关注如何组合和连接类与对象,以达到新的功能。行为型模式如观察者模式(Observer)、策略模式(Strategy)和访问者模式...
c++设计模式--基于Qt4开源跨平台开发框架(源代码)c++设计模式--基于Qt4开源跨平台开发框架(源代码)c++设计模式--基于Qt4开源跨平台开发框架(源代码)c++设计模式--基于Qt4开源跨平台开发框架(源代码)c++设计模式--...
Visual C++实践与提高-COM和COM+篇(高清pdf + 随书源代码).part2,很好的COM技术学习资料
编写C++程序完成以下功能: (1) 声明一个基类Shape(形状),其中包含一个方法来计算面积; (2) 从Shape派生两个类矩形和圆形; (3) 从矩形派生正方形; (4) 分别实现派生类构造函数、析构函数和其他方法; ...
Microsoft Visual C++ 2010 x86 Runtime - 10.0.40219 Microsoft Visual c + + 2010年可再发行组件包安装 Visual c + + 库运行在没有安装 Visual c + + 2010年的计算机上与 Visual 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++版本Savitzky-Golay 滤波器,包括序列噪声去除与插值等等。
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
### C++ 学习笔记精华版 #### 一、C++ 语言概述 **1、历史背景** - **C++ 的江湖地位** - Java、C、C++、Python、C# 是当前主流的编程语言之一,而 C++ 在这些语言中以其高效性和灵活性著称。 - **C++ 之父 ...
本资源是为具有C语言基础的学生准备的C++笔记,涵盖了C++语言的基本概念、语法、对象和类的创建、函数和操作符的使用、内存管理、输入输出流等方面的知识点。 类和对象的创建 在C++中,类是抽象的,需要通过对象来...
内容是C++面对对象的,目录大致来源于菜鸟文档的C++面向对象,笔记是参考各种文章以及菜鸟文档改编的,内容包含C++类和对象(类定义和对象定义,类成员函数,类访问修饰符,友元函数,内联函数,this指针,静态成员...
Linux课程学习笔记 -韩顺平 包含c/c++/python/java 专项 面试题 PDF PPT 笔记 面试题 (百度网盘链接 永久有效) 自学,做笔记,复习可用
《C++设计模式--基于Qt4开源跨平台开发框架》涉及到qt的基础知识和容器语法的使用,qt中的设计模式,是很好的资料。现与大家一起分享。免费下载。 由于上传大小有限制,所以分为两部分。 第一部分下载地址: ...
随着面向对象程序设计思 想的日益普及,很多支持面向 对象程序设计方法语言也相继 出现了,C++就是这样一种语 言。C++是Bjarne Stroustrup 于1980年在AT&T的贝尔实验 室开发的一种语言。