题目的主要信息:

  • 有父类 Base,内部定义了 x、y 属性
  • 有子类 Sub,继承自父类 Base,子类新增了一个 z 属性,并且定义了 calculate 方法,在此方法内计算了父类和子类中 x、y、z 属性三者的乘积
  • 请补全子类构造方法的初始化逻辑,使得该计算逻辑能够正确执行

具体做法:

我们只需要补全子类的构造函数。父类Base的变量都是private类型,不允许外界访问,因此我们我们只能调用父类的构造函数来初始化x和y变量,然后变量z初始化直接赋值即可。子类调用父类的构造函数我们直接将: Base(x, y)加在子类构造函数参数后面即可。 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;
        }

};

class Sub : public Base {

    private:
        int z;

    public:
        Sub(int x, int y, int z) : Base(x, y) { //先继承父类的构造函数 
            // write your code here 
            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;
}

复杂度分析:

  • 时间复杂度:O(1)O(1)O(1),直接计算,常数时间
  • 空间复杂度:O(1)O(1)O(1),无额外空间