c++ 代理类 copy clone

在容器中同时存放基类和代理类会存在问题  会缺失数据

容器中存放基类的指针 1、内存管理的负担  2、 要操作元素,必须知道对象的静态类型


copy clone诞生

基类中诞生一个纯虚函数和虚析构函数


定义一个行为与父类对象相似,而又潜在的表示所有继承自父类对象的类,该类的对象就是代理。

复制代理就会复制相应的对象,给代理赋新值也会删除旧对象,再复制新对象。

代理类中有一个私有的父类型的指针;代理不会继承,是一个第三者。

考虑到父类含有纯虚函数,引入空代理的概念。


虚拟调用

非0检测

赋值操作符的检查


class Vehicle

{

public:

virtual double weight() const = 0;

virtual void start() = 0;

virtual Vehicle* copy() const = 0;

virtual ~Vehicle() {}

};


Vehicle* Truck::copy() const

{

return new Truck(*this);

}


class VehicleSurrogate

{

public:

VehicleSurrogate();

VehicleSurrogate(const Vehicle&);

VehicleSurrogate ();

VehicleSurrogate(const VehicleSurrogate &);     vp(入参.vp ? 入参->copy:0)

VehicleSurrogate& operator=(const VehicleSurrogate&);    if(this != 入参)

private:

Vehicle *vp;

}









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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值