c++ - 尽管有类继承,但仍无法访问变量?

标签 c++ class inheritance

<分区>

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

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 析构函数。

关于c++ - 尽管有类继承,但仍无法访问变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17077848/

相关文章:

java - 从外部类引用内部类中的方法

class - Dart flutter : The default value of an optional parameter must be constant when setting a default value to class constructor

java - 在 Clojure 中扩展 Java Swing 类

C++多线程环境下静态变量的初始化

c++ - 将方法添加到与继承方法同名的子类

java - 父子实例之间的关系

c++ - 静态指针和其他奇怪的东西

c++ - Boost::asio 阻塞 Tcp 服务器困惑

c++ - C++ 中的安全内存分配器

c++ - unique_ptr 编译错误