在继承的类构造函数中,我想使用一个类常量成员,该成员从基类构造函数中隐藏一个基类:
#include <string>
#include <iostream>
class BaseClass {
private:
const int constant_variable { 21 };
public:
int mutable_variable;
BaseClass(): mutable_variable(constant_variable) {};
};
class DerivedClass: public BaseClass {
private:
const int constant_variable { 42 };
public:
using BaseClass::BaseClass;
};
int main () {
DerivedClass dc;
std::cout << dc.mutable_variable << std::endl; // 21, but I want it to be 42
return 0;
}
例如,在示例代码中,BaseClass的构造函数使用自己的
constant_variable
值,而我希望它使用DerivedClass的constant_variable
。如何在C++中做到这一点?
最佳答案
我不知道您是否需要在基数中使用常量成员,但是如果您想从派生类构造函数以及可变成员中指定其值,则可以使用 protected c'tor:
class BaseClass {
private:
const int constant_variable { 21 };
protected:
BaseClass(int init) : constant_variable{init}, mutable_variable{init}
{}
public:
int mutable_variable;
BaseClass(): mutable_variable(constant_variable) {}
};
class DerivedClass: public BaseClass {
public:
DerivedClass() : BaseClass(42) {}
};
您应该知道
constant_variable
不是编译时间常数,它占用每个对象中的空间。关于c++ - 在继承的类构造函数中使用隐藏成员,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48202624/