c++ 代理类

来源:互联网 发布:亚马逊 推荐算法 编辑:程序博客网 时间:2024/06/10 22:20

c++ 沉思录学习

 

代理类

 

c++ 沉思录介绍代理类,由一个需求引入,如下:

 

设计一容器,使此容器有包含不同类型的而彼此相关联的对象?

 

如书中,以Vehicle为例,定义Vehicle抽象类,其他各个实际的类均继承此抽象类;此处使用继承技术。

 

1  传统处理方法

 

书中举3种处理方式进行说明,简单说明如下:

 

定义: Vehicle parking_lot[1000];  此数组容器,存储停于停车场上的所有Vehicle

 

(1) 直接将定义的对象,赋值于parking_lot, 此种情况会丢失对象的某些数据,具体可参考c++之父的《c++程序设计原理与实践》

 

(2) 赋值对象的引用,引入的问题是当原对象delete后,parking_lot中的指针将成为悬挂指针,故需改进

 

(3) 此方法是对2的改进,将对象的副本赋值于parking_lot, 此时引入显示进行动态操作,而且增加动态内存管理的负担

 

2 基于上面的讨论,作者使用虚copy函数,由copy生产对象的副本,复制于parking_lot。具体实现可参加c++深思录,也可参考《c++程序设计原理与实践》

 

3 抽象类

 

抽象类:实质上是对Vehicle对象使用的类,以Vehicle对象为数据的一种类。通过定义此类的默认构造函数,赋值函数,赋值构造函数,析构函数,实现对对象的拷贝与引用。

(未完待续)

 

总结:抽象类通过将抽象类对象进行封装,实现将不同对象放入一个容器种的功能;其次通过抽象类种copy纯虚函数,实现对内存分配的控制;析构函数完成对对象的释放。

 

 

 

原创粉丝点击