C++代理类

原创 2013年12月02日 20:46:57


class Vehice{
public:
virtual double weight() const = 0;
virtual void start() = 0;
virtual Vehice* copy() const=0;
virtual ~Vehice():
};




class RoadVehicle:public Vehice{/* ... */};


class AutoVehicle:public RoadVehicle{/* ... */};


class Aircraft:public Vehice{/* ... */};


class Helicopter:public Aircraft{/* ... */};


Vehice* RoadVehicle::copy() const
{
return new RoadVehicle(this);
}


class VehicelSurrogate{
public:
VehicelSurrogate();
VehicelSurrogate(const Vehice &);
~VehicelSurrogate();
VehicelSurrogate(const VehicelSurrogate &);
VehicelSurrogate &  operator(const VehicelSurrogate &);
private:
Vehice * vp;
};


VehicelSurrogate::VehicelSurrogate():vp(0){}
VehicelSurrogate::VehicelSurrogate(const Vehice &v):vp(v.copy()){}
VehicelSurrogate::~VehicelSurrogate(){delete vp;}
VehicelSurrogate::VehicelSurrogate(const VehicelSurrogate &v):vp(v.vp?v.vp->copy():0){}
VehicelSurrogate& VehicelSurrogate::operator=(const VehicelSurrogate &v)
{
if (this != &v)
{
delete vp;
vp = (v.vp?v.vp->start():0);
}
return *this;
}


double VehicelSurrogate::weigh()const
{
if (vp == 0)
{
throw "empty VehicelSurrogate.weigh()";
}
return vp->weight();
}


void VehicelSurrogate::start()
{
if (vp == 0)
{
throw "empty VehicelSurrogate.start()";
}
vp->start();
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

c++ 代理类

C++代理类的使用 所谓代理类,即surrogate.为什么要使用它呢,简单的举个例子.  1 class Vehicle  2 {  3 public:  4     Vehicle(){...

c++代理类

C++代理类是为了解决这样的问题: 容器通常只能包含一种类型的对象,所以很难在容器中存储对象本身。怎样设计一个c++容器,使它有能力包含类型不同而彼此相关的对象?  代理运行起来和他所代表的对象...

C++ 一个字符串的代理类(String View)

C++ 字符串代理类(String View)

c++ 代理类(一)

1.为什么c++需要代理类 考虑如下的一个小实例:假设有一个类,命名为RoadVehicle,代表陆地上的车辆,简单的定义如下: //定义陆地上的车辆 class RoadVehicle { publ...

c++中的代理类和句柄类

指针是 C 与其他语言区别的重要特征之一,在 C++ 中,指针也被广泛运用,我们通过指针实现多态。然而,众所周知,指针的使用必须小心,否则很容易造成内存泄漏 Memory Leak。当我们有几个指针指...

c++ 代理类与句柄类实现思想

指针是 C 与其他语言区别的重要特征之一,在 C++ 中,指针也被广泛运用,我们通过指针实现多态。然而,众所周知,指针的使用必须小心,否则很容易造成内存泄漏 Memory Leak。当我们有几个指针指...

C++代理类设计(一)

作用:使设计的容器有能力包含类型不同而彼此相关的对象。 容器通常只能包含一种类型的对象,所以很难再容器中存储对象本身。存储指向对象的指针,虽然允许通过继承来处理类型不同的问题(多态性),但是也增加了内...

《C++沉思录》第5章 代理类——(整理)

《C++沉思录》第5章 代理类——(整理) 转自:http://hi.baidu.com/cndx100/blog/item/e009cd46e3a9650f6a63e5e4.html 200...

C++设计:代理类

#include #include #include using namespace std; class Base{ public: virtual int get()const = 0; v...

c++代理类(二)

2. 智能指针  “c++代理类(一)”中完成的简单代理类虽然解决了最急迫的问题,但效率上又存在了另外的问题,该简单类存在的问题主要是: 每个代理类对象都唯一关联一个实际对象,代理类对象存在则实际...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)