如何在C++中的基类和派生类之间共享一个通用的默认参数值
How can I share a common default parameter value between base and derived class in C++?
考虑以下类:
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) {}
//...
相关文章:
- 构造函数在退出函数时无法初始化一个参数
- 运算符重载:"operator+"必须采用零个或一个参数
- 如果需要转换,我可以在读取参数的同时将其移动到另一个参数吗?
- 两个函数模板候选项.将一个参数作为引用后,选择不太专业的模板
- 如何设置默认参数以防用户不输入另一个参数
- 使用一个参数的模板函数时出错(适用于 2)
- 仅当一个参数中未使用 std::function 时,模板函数替换才有效
- 如何在两个树通用的函数中创建一个参数?
- 使用带有一个参数函数的递归找到数字的平方
- 专门处理一个参数(C++模板)的两个模板参数
- 模板函数,其中一个参数需要专门化,而另一个不需要
- 如何更改参数包中的最后一个参数
- C++ 如何使用一个参数从派生类构造函数中调用具有两个参数的超类构造函数
- 模板参数重载,最后一个参数为非类型名
- 根据一个参数对数组进行排序
- 是否可以将指针传递给运算符,作为一个参数,例如指向函数的指针
- 用一个参数计数圆形链接列表中的节点
- 将数组作为一个参数从一个函数传递到C 中的另一个函数
- 将另一个参数传递给函子的库
- 分叉:使用一个参数运行 shell 时资源暂时不可用