321、编写一个计算基础代谢率(BMR)的纯虚函数原型。该函数没有参数,返回一个浮点数。
virtual float calculate_bmr() = 0;
322、在成员访问方面,分析公共基类继承和私有基类继承的区别。
在公共基类继承中,基类的公共成员在派生类中仍作为公共成员可用;在私有基类继承中,基类的公共成员在派生类中仅作为私有成员可用。但无论是哪种继承方式,基类的 私有成员 在派生类中都不能被直接访问。
323、描述派生类所拥有的自动构造函数(默认和复制构造函数)。
-
自动默认构造函数 :若在对象声明中激活派生类(如布谷鸟钟)的自动默认构造函数,它会激活基类(如普通时钟)的默认构造函数,初始化基类的私有成员变量。这些私有成员变量存在于派生类中,虽无法直接访问,但必须初始化。
-
自动复制构造函数 :若派生类未定义自己的复制构造函数,C++会自动提供。它分两步执行:
- 激活基类的复制构造函数,复制基类使用的成员变量;
- 激活派生类有但基类没有的新成员变量的复制构造函数。
这两步中激活的复制构造函数可能是自动复制构造函数,也可能是为正确复制动态数据结构而专门编写的。
324、解释为什么在赋值操作中,基类对象不能当作派生类对象使用。
基类对象不具备派生类对象特有的成员变量和功能,所以不能当作派生类对象使用。例如普通时钟(基类对象)没有布谷鸟时钟(派生类对象)特有的功能,不能将普通时钟当作布谷鸟时钟使用。
325、从 clock 类派生一个 daylight_clock 类,并实现一个新的成员函数 is_day(),该函数用于判断当前是否为白天(7:00 A.M. 到 6:59 P.M.)。
以下是实现 daylight_clock 类的代码示例:
#include <iostream>
class clock {
public:
clock();
void set_time(int hour, int minute, bool morning);
void advance(int minutes);
int get_hour() const;
int get_minute() const;
bool is_morning() const;
private:
// 此处省略私有成员实现
};
class daylight_clock : public clock {
public:
bool is_day() const {
int hour = get_hour();
bool morning = is_morning();
if (morning) {
return hour >= 7;
} else {
return hour < 12 || (hour == 12 && get_minute() == 0);
}
}
};
上述代码定义了 daylight_clock 类,它从 clock 类派生而来,并实现了 is_day() 函数,用于判断当前是否为白天(7:00 A.M. 到 6:59 P.M.)。
326、描述派生类中自动赋值运算符和析构函数的行为。
自动赋值运算符与自动析构函数
自动赋值运算符
若派生类未定义自己的赋值运算符,C++ 会自动提供。
该运算符分两步执行:
- 激活基类的赋值运算符,以复制基类使用的任何成员变量;
- 激活派生类有但基类没有的任何新成员变量的赋值运算符。

最低0.47元/天 解锁文章
632

被折叠的 条评论
为什么被折叠?



