如何在C++中的基类和派生类之间共享一个通用的默认参数值

How can I share a common default parameter value between base and derived class in C++?

本文关键字:一个 参数 默认 之间 C++ 基类 派生 共享      更新时间:2023-10-16

考虑以下类:

class A {
   public:
   A( std::string param = "123" ) {} 
};
class B : public A{ 
   public: 
   B() : A() {}
   B( std::string param ) : A( param ) {}
};

有比这更好的方法来确保使用来自a的默认参数值吗?我希望有人能够通过提供字符串参数或不提供字符串参数来构造B。

根据您的具体需求,这可能是最好的选择(如果您想确保在派生类型中立即获取基中默认参数的更改),或者您可以使用与在基中相同的方法:

class B : public A {
public:
   B(std::string const & arg = "123") : A(arg) {}
// ...

在这种情况下,如果更改基类型中的值,则需要记住更新派生类型中的默认值。你也可以把它作为一个常数:

const char* defaultParam = "123";
class A {
public:
   A(std::string const& s=defaultParam) // ...
//...
};
class B : public A {
public:
   B(std::string const& s=defaultParam) : A(s) {}
//...