如何在C++中的派生类的构造函数中初始化基类的const变量?

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)

  • +1,是的,是的.注意,如果你要在头文件中实现`Base :: ~Base`,它应该是`inline virtual`. (3认同)