题意整理。

  • 给定一个父类Base,定义了一个计算方法,用于计算两个数相乘。
  • 要求在子类中重写这个方法,将乘法改为除法。

方法一(调用父类构造)

1.解题思路

  • 通过父类构造函数,初始化x、y的值。
  • 重写calculate方法,将乘法改为除法。

图解展示: alt

2.代码实现

#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:
    //通过父类构造函数,初始化x、y的值
    Sub(int x,int y):Base(x,y){
        
    }
    
    void calculate(){
        //如果Y为0,输出"Error"
        if(getY()==0){
            cout << "Error" << endl;
        }
        //输出X/Y的结果
        else{
            cout << getX()/getY() << endl;
        }
    }
};

int main() {

    int x, y, z;
    cin >> x;
    cin >> y;
    Sub sub(x, y);
    sub.calculate();
    
    return 0;
}

3.复杂度分析

  • 时间复杂度:需要进行常数次操作,所以时间复杂度为O(1)O(1)
  • 空间复杂度:需要额外常数级别的空间,所以空间复杂度为O(1)O(1)