首先定义一个抽象类,里面有一个纯虚函数用来实现加减法功能。
class abstractCalculator {
public:
virtual int getResult()=0;
void setValue1(int v) {
value1=v;
}
void setValue2(int v) {
value2=v;
}
protected:
int value1;
int value2;
};
之后定义一个加法类和一个减法类,都公有继承上面的抽象计算机类,用纯虚函数实现加法和减法功能,并返回计算后的值。
class PlusCalculator:public abstractCalculator {
virtual int getResult() {
return value1+value2;
}
};
class SubCalculator:public abstractCalculator {
virtual int getResult() {
return value1-value2;
}
};
定义两个函数,输入想要加减的两个数,动态调用基类和派生类中的虚函数,计算结果
void PLUS(abstractCalculator *p) {
cout<<"输入要相加的两数"<<endl;
int j,k;
cin>>j>>k;
p= new PlusCalculator;
p-> setValue1(j);
p-> setValue2(k);
cout<<"结果为"<<p->getResult() <<endl;
delete p;
}
void SUB(abstractCalculator *p) {
cout<<"输入要相减的两数"<<endl;
int j,k;
cin>>j>>k;
p= new SubCalculator;
p-> setValue1(j);
p-> setValue2(k);
cout<<"结果为"<<p->getResult() <<endl;
delete p;
}
主函数选择加或减功能
int main() {
abstractCalculator *pcal;
int i;
cout<<"使用加法按1,使用减法按2"<<endl;
cin>>i;
switch(i) {
case 1:
PLUS(pcal);
break;
case 2:
SUB(pcal);
break;
}
return 0;
}
效果图