题意整理。

  • 给定一个父类Base,包括x、y两个成员变量。子类Sub继承自父类,新增z成员变量,定义了 calculate方法,在此方法内计算了父类和子类中x、y、z属性三者的乘积。
  • 补全子类构造函数,使得逻辑正确运行。

方法一(调用父类构造)

1.解题思路

  • 通过父类构造函数,初始化x、y的值。
  • 通过子类构造函数的形参直接给z赋值,来初始化z的值。

图解展示: 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;
        }

};

class Sub : public Base {

    private:
        int z;

    public:
        //通过父类构造函数,初始化x、y的值
        Sub(int x, int y, int z): Base(x,y){
            //初始化z的值
            this->z=z;
        }

        int getZ() {
            return z;
        }

        int calculate() {
            return Base::getX() * Base::getY() * this->getZ();
        }

};

int main() {

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

3.复杂度分析

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