考虑以下类:
class A {
public:
A( std::string param = "123" ) {}
};
class B : public A{
public:
B() : A() {}
B( std::string param ) : A( param ) {}
};
有没有比这更好的方法来确保使用来自 A 的默认参数值?我希望有人能够通过提供或不提供字符串参数来构造 B。
考虑以下类:
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) {}
//...