注册 登录
编程论坛 C++教室

【宅女求讲解一段程序】 virtual constructor

xixifans 发布于 2012-11-20 13:56, 671 次点击
书上有一段程序。老师要求我们会运用。但是我怎么都看不懂= =
求大神讲解.。分不是很多 = =帮个俺的话可以去回我别的帖子。我在继续发分。。每天都有新分嘛!

这貌似是关于虚基类指针还是神马的东西。。还有clone函数virtual copy constructor
#ifndef PAYOFFBRIDGE_H
#define PAYOFFBRIDGE_H
#include<PayOff3.h>
class PayOffBridge
{
public:
PayOffBridge(const PayOffBridge& original);
PayOffBridge(const PayOff& innerPayOff);
inline double operator()(double Spot) const;
~PayOffBridge();
PayOffBridge& operator=(const PayOffBridge& original);
private:
PayOff* ThePayOffPtr;
};
inline double PayOffBridge::operator()(double Spot) const
{
return ThePayOffPtr->operator ()(Spot);
}
#endif


PayOffBridge::PayOffBridge(const PayOffBridge& original)
{
ThePayOffPtr = original.ThePayOffPtr->clone();
}
PayOffBridge::PayOffBridge(const PayOff& innerPayOff)
{
ThePayOffPtr = innerPayOff.clone();
}
PayOffBridge::~PayOffBridge()
{
delete ThePayOffPtr;
}
PayOffBridge& PayOffBridge::operator=
(const PayOffBridge& original)
{
if (this != &original)
{
delete ThePayOffPtr;
ThePayOffPtr = original.ThePayOffPtr->clone();
}
return *this;
}

2 回复
#2
xixifans2012-11-20 14:02
程序代码:
//我是想把fund作为虚基类把我的操作函数 buy,sell,apply_for_purchase,Redemption也像上面那样实现= =
//在fund中声明所需要的函数,virtual之,定义虚基类的指针(就是一个类似于
Virtual fund*clone() const=0  的东西,在后面两个派生类的使用虚基类的指针进行操作)



class fund
{
public:
    fund(){};

private:
};

class motherfund: public fund
{
public:
    motherfund(double netvalue_) : netvalue(netvalue_) {};

private:
    double netvalue;
};

class umbrellafund : public fund
{
public:
    umbrellafund(double netvalue_,double stockprice_) : netvalue(netvalue_),stockprice(stockprice_) {};
private:
    double netvalue;
    double stockprice;
};



输入三个值:motherfund的netvalue(即Nm),两个umbrellafund的stockprice(即Ma&    Mb),根据一下两个判断条件,来进行操作
[1]    (Ma+Mb)*(1-br)> 2*Nm*(1+Pr):
以Nm的价格申购(函数设为apply_for_purchase)2x(x为任意正整数)份,以Ma+Mb的价格卖出(sell);
收益(设为payoff):(Ma+Mb)*x*(1-br)-2x*Nm*(1+Pr);
[2]    (Ma+Mb)* (1-br)< 2*Nm*(1+Rr):
买入(函数为buy)y份A(umbrella的对象)基金+y份B(umbrella的对象)基金,合并成2y份母基金,赎回(函数Redemption);
收益:2y*Nm*(1+Rr) -(Ma+Mb)*y*(1-br);

其中Pr=1.5%,Rr=0.5%;
注:加粗的几个地方的函数并没有什么实际的操作,它的作用是如果以后我要扩展程序到和软件关联时来用的。关键是比较两个条件,如果满足,则算出收益。
#3
xixifans2012-11-20 14:47
自顶一下吧。不知道是不是我这样设计根本用不到clone函数
1