想用工厂模式写个计算器
先写了个基类,里面有虚函数
class Operation
{
public:
//result 结果
virtual double GetResult() {
double result = 0;
return result;
}
double _numberA = 0;
double _numberB = 0;
private:
};
然后我是这么重写的
class OperationAdd : public Operation
{
public:
double GetResult() override {
double result = 0;
result = _numberA + _numberB;
return result;
}
};
多态函数写的我一头雾水,就把他向下转换就能直接重写了吗,可是后面运行时候还是调用的基类函数= =
class OperationFactor
{
public:
static Operation* createOperate(char operate) {
Operation* oper=NULL;
switch (operate)
{
case '+':
oper = new OperationAdd();
break;
case '-':
oper = new OperationSub();
break;
case '*':
oper = new OperationMul();
break;
case '/':
oper = new OperationDiv();
break;
}
return oper;
}
};
最后是客户端代码:
Operation *oper=new Operation();
char operate;
cout << "请输入所需运算符: + - * /" << endl;
cin >> operate;
oper = (new OperationFactor)->createOperate(operate);
cout << "请输入数字1:" << endl;
cin >> oper->_numberA;
cout << "请输入数字2:" << endl;
cin >>oper->_numberB;
double result = oper.GetResult();
cout <<"运算结果为:" << result;```