关于C++:尽管类继承,变量仍然无法访问?

Variable inaccessible despite class inheritance?

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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析构函数。