题意整理。
- 给定一个父类Base,包括x、y两个成员变量。子类Sub继承自父类,新增z成员变量,定义了 calculate方法,在此方法内计算了父类和子类中x、y、z属性三者的乘积。
- 补全子类构造函数,使得逻辑正确运行。
方法一(调用父类构造)
1.解题思路
- 通过父类构造函数,初始化x、y的值。
- 通过子类构造函数的形参直接给z赋值,来初始化z的值。
图解展示:
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.复杂度分析
- 时间复杂度:需要进行常数次操作,所以时间复杂度为。
- 空间复杂度:需要额外常数级别的空间,所以空间复杂度为。