关于继承中受保护成员的问题

1 c++ inheritance

我认为通过继承类可以访问受保护的成员.那么,相信这是好的,我在思考过程中的错误是什么?

我有一些课程,食物和蔬菜,Veg继承自食物.食物有受保护的成员年龄; 在Veg的构造函数中,我尝试将age初始化为0.为什么这不起作用?

一些代码......

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

class Veg : public Food
{
//snip
};

class Food
{
//snip
protected:
    int age;
};
Run Code Online (Sandbox Code Playgroud)

Jam*_*lis 7

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

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

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

  • @cellh:因为基类数据成员被初始化为基类构造函数的执行的一部分.对象只能初始化一次. (2认同)