我有两个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)
{
}
显然,在Sub.ccp构造函数中,_state和_previousState是错误的。如何将它们正确地整合到这种结构中?
答案 0 :(得分:5)
为基础构造函数提供一些参数,并使用参数调用它:
Base::Base(State state = {}, State previousState = {})
: _state(state)
, _previousState(previousState)
{}
// ...
Sub::Sub(int rate)
: Base(Silent, Running)
, _rate(rate)
, _checkCount(0)
{}
答案 1 :(得分:2)
您可以提供具有基类默认值的默认构造函数
heroku config:set DB_POOL=5
另一种方式:由于基类中的数据成员受到保护,您可以在子类的构造函数体中更改其值
heroku config:set MAX_THREADS=5