题目的主要信息:
- 在父类 Base 中定义了计算方法 calculate(),该方法用于计算两个数的乘积(X*Y)
- 请在子类 Sub 中重写该方法,将计算逻辑由乘法改为除法(X/Y)。
- 当分母为0时输出“Error”
- int型除法,不考虑小数
具体做法:
首先子类完全继承了父类的成员变量,我们对其初始化直接调用父类的构造函数:Sub(int x, int y) : Base(x, y){}
然后父类的成员变量是private类型的,不允许直接访问,我们在写calculate()方法的时候,需要调用父类的getX()和getY()访问这两个变量,先判断除数是否为零,再计算结果。
#include <iostream>
using namespace std;
class Base {
private:
int x;
int y;
public:
Base(int x, int y) {
this->x = x;
this->y = y;
}
int getX() {
return x;
}
int getY() {
return y;
}
void calculate() {
cout << getX() * getY() << endl;
}
};
class Sub : public Base {
public:
Sub(int x, int y) : Base(x, y){} //构造函数
void calculate(){ //计算除法的函数
if(Base::getY() == 0) //先判断除数是否为0
cout << "Error" << endl;
else //再输出商
cout << Base::getX() / Base::getY() << endl;
}
};
int main() {
int x, y, z;
cin >> x;
cin >> y;
Sub sub(x, y);
sub.calculate();
return 0;
}
复杂度分析:
- 时间复杂度:O(1),直接计算,常数时间
- 空间复杂度:O(1),无额外空间