2

考虑以下类:

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

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

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

4

1 回答 1

2

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

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) {}
//...
于 2013-02-23T05:22:18.900 回答