c++ 代理类

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纯虚函数,实现对内存分配的控制;析构函数完成对对象的释放。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值