具体详情,请见网址:https://www.bilibili.com/video/BV1et411b73Z?p=136
多态的实现:目前学了2种实现方式
#include <iostream>
using namespace std;
class AbstractCalculator
{
public:
virtual int getResult()
{
return 0;
}
// 上面的代码可以写成这样的:
// virtual int getResult() =0; 纯虚函数。类里有纯虚函数,那么这类就是抽象类
// 特点是:1,抽象类无法实例化;2,子类必须重写纯虚函数,否则子类也属于纯虚函数
int m_A;
int m_B;
};
class AddOperator : public AbstractCalculator
{
public:
int getResult()
{
return m_A + m_B;
}
};
void test01()
{
AbstractCalculator* cal = new AddOperator; // 这里新建了个父类指针, 指向了子类,这是第一种用法
cal->m_A = 10;
cal->m_B = 20;
cout << cal->getResult() << endl;
delete cal;
}
int main()
{
test01();
return 0;
}
下面是第二种方法。
#include <iostream>
using namespace std;
class AbstractCalculator
{
public:
virtual int getResult()
{
return 0;
}
int m_A;
int m_B;
};
class AddOperator : public AbstractCalculator
{
public:
int getResult()
{
return m_A + m_B;
}
};
int doCal(AbstractCalculator &cal)
{
return cal.getResult();
}
void test01()
{
AddOperator cal;
cal.m_A = 10;
cal.m_B = 20;
cout << doCal(cal) << endl;
}
int main()
{
test01();
return 0;
}
可能未完待续。