c++ - 关于继承中 protected 成员的问题

标签 c++ inheritance

我相信 protected 成员可以通过继承类访问。那么,我在认为这是可以的思维过程中犯了什么错误?

我有一些类,Food 和 Veg,其中 Veg 继承自 Food。食物有一个 protected 成员 int age;在 Veg 的构造函数中,我尝试将 age 初始化为 0。为什么这无效?

一些代码...

Veg::Veg():age(0)
{
    cout << "Veg constructor." << endl;
}

class Veg : public Food
{
//snip
};

class Food
{
//snip
protected:
    int age;
};

最佳答案

在类 C 的构造函数的初始化列表中,您只能初始化

  1. C类的直接基类,
  2. C 的虚拟基类,和
  3. C 类的非静态数据成员。

如果要初始化基类的数据成员,则需要在基类构造函数的初始化列表或派生类构造函数的主体中进行。您不能在派生类的构造函数的初始化列表中执行此操作。

关于c++ - 关于继承中 protected 成员的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5255368/

相关文章:

c++ - 使用标准库用 strtok 替换循环

c++ - 将两个 uint32_t 转换为 uint64_t,然后根据位模式而不是值转回 double

c++ - 在 C++ 中,std::set.end() 会返回什么?

c++ - 嵌套 for 循环仅运行内部循环 (c++)

inheritance - 在 TypeScript 中是否有等同于 "sealed"或 "final"的东西?

java - 类型转换泛型

html - CSS 继承 - 为什么 'later' 声明被 'earlier' 声明覆盖?

python - 如何通过共享内存将 cv::Mat 发送到 python?

python - 在 Python 2.7 中,通过 super(self.__class__, self)... 调用 super 构造函数不是更好吗?

javascript - 为什么我的 ActionButton 基类被覆盖?