尽管有类继承,变量仍不可访问

Variable inaccessible despite class inheritance?

本文关键字:访问 变量 继承      更新时间:2023-10-16

我很难理解为什么变量engineNum无法从类Pickup中的函数中访问。我的基本理解是,如果类是继承的,私有变量应该是可访问的。我发现的情况并非如此:

class Truck
{
private:
    string model;
    Truck() {};
    static int TruckEngineNum;
    int engineNum;
public:
    Truck(const string& model) 
    {
        this->model = model;
        engineNum = TruckEngineNum++;
    };
    string getModel() 
    {
        return model;
    }
    int getEngineNum() 
    {
        return engineNum;
    }
};
int Truck::TruckEngineNum = 100;
class Pickup : public Truck
{
public:
    Pickup(const string& model) : Truck(model) 
    {
        if((engineNum % 2) == 1){ engineNum++; };
    }
};

派生类无法访问private变量。如果要访问它,则需要将其声明为 protected

此外,如果计划将 Truck 类用作多态基类,则应声明virutal析构函数。