use*_*392 18 c++ inheritance constructor const
我有一个没有构造函数的抽象C++类.它应该是一个基类,所以其他类可以继承它.我想要做的是在基类中声明一个常量变量,并在每个派生类的构造函数中初始化它,但在每个类中没有其他地方.它在C++中是否合法?如果是这样,我该怎么做?
Kon*_*lph 22
它在C++中是否合法?
不可以.必须在基类构造函数中初始化常量.
解决方案是在基类中提供适当的构造函数 - 否则无法使用它.此外,没有理由不提供该构造函数.
class Base {
int const constant;
public:
virtual ~Base() = 0; // Makes this an abstract base class.
protected:
Base(int c) : constant(c) { }
};
// Must be implemented!
Base::~Base() { }
class Derived : public Base {
public:
Derived() : Base(42) { }
};
Run Code Online (Sandbox Code Playgroud)