题目的主要信息:

  • 在父类 Base 中定义了计算方法 calculate(),该方法用于计算两个数的乘积(X*Y)
  • 请在子类 Sub 中重写该方法,将计算逻辑由乘法改为除法(X/Y)。
  • 当分母为0时输出“Error”
  • int型除法,不考虑小数

具体做法:

首先子类完全继承了父类的成员变量,我们对其初始化直接调用父类的构造函数:Sub(int x, int y) : Base(x, y){}

然后父类的成员变量是private类型的,不允许直接访问,我们在写calculate()方法的时候,需要调用父类的getX()和getY()访问这两个变量,先判断除数是否为零,再计算结果。

alt

#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)O(1),直接计算,常数时间
  • 空间复杂度:O(1)O(1)O(1),无额外空间