C++ 如何使派生 class 自动获取基本 class 参数

C++ How to make derived class to take base class parameters automatically

当我更改基 class 中的值,然后创建子 class 的对象时,子 class 使用空参数创建,而不是更改价值。 有没有一种方法可以使用基 class 的参数来对象派生 class?

示例:

Base.h

class Base
{

class Child;

public:
    int number = 0;
    Child *chilObject;

    void Setup()
    {
         number = 5;
         childObject = new Child;
    }
};

Child.h

class Child :
    public Base
    {

    };

主要

int main()
{
    Base base;   
    base.Setup();

    cout << base.number << " : " << base->chilObject.number << endl;
    cout <<  << endl;        
}

Output: 5 : 0

我只是问是否有办法让派生的 class 对象自动获取 Base class 变量。

这是 C++ 中的典型做法:

#include <iostream>

class Base
{

public:

    int number = 0;

    virtual ~Base() = default;

    void Setup()
    {
        number = 5;
    }
};

class Child : public Base
{
    // number exists here because of inheritance.
};

int main()
{
    // Child object seen as Base object:
    Base* base = new Child;
    base->Setup();

    // Child object seen as Child object:
    Child* child = static_cast< Child* >( base );

    // Both share the same 'number' variable, so:

    std::cout << base->number << " : " << child->number << std::endl;
    std::cout << std::endl;

    // Free memory taken by 'new'.
    delete base;

    return 0;
}

产量:

5 : 5

在实际代码中,您可能会将 Setup 设为虚拟而不进行转换。