书上使用c#实现的,我改成了c++,本人属于菜鸟级别,如有错误还请留言指教
#include <iostream>
#include <string>
using namespace std;
class Operation
{
public:
double A;
double B;
virtual double GetResult()
{
};
};
class OperationAdd : public Operation
{
public:
virtual double GetResult()
{
double result = 0;
result = A + B;
return result;
};
};
class OperationSub : public Operation
{
public:
virtual double GetResult()
{
double result = 0;
result = A - B;
return result;
};
};
class OperationMul : public Operation
{
public:
virtual double GetResult()
{
double result = 0;
result = A * B;
return result;
};
};
class OperationDiv : public Operation
{
public:
virtual double GetResult()
{
double result = 0;
if( B == 0 )
{
//throw new Exception( "wrong");
cerr << "wrong" << endl;
}
result = A / B;
return result;
};
};
class OperationFactory
{
public:
Operation* createOperate( int operate )
{
Operation *oper = NULL;
switch( operate )
{
case 1:
oper = new OperationAdd();
break;
case 2:
oper = new OperationSub();
break;
case 3:
oper = new OperationMul();
break;
case 4:
oper = new OperationDiv();
break;
}
return oper;
}
};
int main()
{
Operation *oper;
OperationFactory choose;
oper = choose.createOperate( 1 );
oper->A = 1;
oper->B = 2;
double result = oper->GetResult();
cout << result << endl;
return 0;
}