题目的主要信息:
- 要求在BaseCalculator类中提供 getResult() 函数(无需实现)
- AddCalculator实现两个成员相加(m_A + m_B)
- SubCalculator实现两个成员相减(m_A - m_B)
具体做法:
因为加法计算器和减法计算器都继承自父类,成员变量也是父类的变量,为了使它们有各自不同的getResult()函数,我们需要在父类及子类函数前添加标识符virtual,让函数可以在子类中重载。这样,父类中可以不用实现该函数,只是挂个名,子类分别实现加减法。
#include <iostream>
using namespace std;
class BaseCalculator {
public:
int m_A;
int m_B;
// write your code here......
virtual int getResult(){}//不用实现
};
// 加法计算器类
class AddCalculator : public BaseCalculator {
// write your code here......
virtual int getResult(){
return m_A + m_B;
}
};
// 减法计算器类
class SubCalculator : public BaseCalculator {
// write your code here......
virtual int getResult(){
return m_A - m_B;
}
};
int main() {
BaseCalculator* cal = new AddCalculator;
cal->m_A = 10;
cal->m_B = 20;
cout << cal->getResult() << endl;
cal = new SubCalculator;
cal->m_A = 20;
cal->m_B = 10;
cout << cal->getResult() << endl;
delete cal;
return 0;
}
复杂度分析:
- 时间复杂度:,直接计算,常数时间
- 空间复杂度:,无额外空间