如何使用默认参数从构造函数中调用超级构造函数?

Bad*_*Cat 0 c++ inheritance constructor

我有两个C++类,一个基类和一个子类.基类定义了一些属性,子类定义了其他属性.现在,在子类中,构造函数定义了几个默认参数,它也需要包含基类的默认参数.我怎么做?

例:

// Base.h
class Base {
    protected:
        State _state;
        State _previousState;

    public: Base();
};

// Sub.h
class Sub : public Base {
    private:
        int _rate;
        int _checkCount;

    public: explicit Sub(int sampleRate);
};

// Sub.cpp
Sub::Sub(int rate)
    :_state(Silent),
    _previousState(Running),
    _rate(rate),
    _checkCount(0)
{
}
Run Code Online (Sandbox Code Playgroud)

显然,在Sub.ccp构造函数中,_state和_previousState args是错误的.如何将它们正确地集成到这个结构中?

Lig*_*ica 5

通过给基础构造函数一些参数,并使用参数调用它:

Base::Base(State state = {}, State previousState = {})
   : _state(state)
   , _previousState(previousState)
{}

// ...

Sub::Sub(int rate)
   : Base(Silent, Running)
   , _rate(rate)
   , _checkCount(0)
{}
Run Code Online (Sandbox Code Playgroud)