多态的方式可以使代码更加简洁,明了。
主要是通过子类继承父类,然后重写父类中的虚函数,重写的方式不同可以实现不同的功能
普通方式:
多态方式:
抽象的父类:
AbstractCalulator为父类
class AbstractCalculator {//抽象的父类
public:
virtual int calculator() {//父类中有虚函数,之类重写
return 0;
}
int a, b;
};
加法
Add继承并重写了AbstractCalulator的calulator函数
class Add :public AbstractCalculator {
public:
int calculator()
{
return a + b;
}`
};
减法
class sub :public AbstractCalculator {//sub继承AbstractCalculator
public:
int calculator()
{
return a - b;
}
};
乘法
class mul :public AbstractCalculator {
public :
int calculator() {
return a * b;
}
};
添加除法
class Division :public AbstractCalculator {
public:
int calculator() {
return a / b;
}
};
测试
void test01() {
Calculator c1;
c1.m_a = 10;
c1.m_b = 20;
cout << c1.calculator("*") << endl;
}
void test02() {
//乘法
AbstractCalculator* abc = new mul;
abc->a = 10;
abc->b = 30;
cout << abc->calculator() << endl;
delete abc;//堆区手动释放
//加法
abc = new Add;
abc->a = 20;
abc->b = 30;
cout << abc->calculator() << endl;
delete abc;
//除法
abc = new Division;
abc->a = 900;
abc->b = 30;
cout << abc->calculator() << endl;
}
int main()
{
//test01();
test02();
system("pause");
return 0;
}