C++ 在子类中调用基类构造函数

Fel*_*euk 0 c++ inheritance constructor super radix

来自Java,我对调用基类构造函数(或super())有点困惑。我有 2 个类:Player(抽象类)和HumanPlayer ,它是 Player 的子类。现在,我有一个 Player 的构造函数,其声明如下:

Player(string name, list<Point> points);
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试实现这样的东西:

HumanPlayer() {
    string name = get name from user...
    list<Point> points = get points from user...
    ...
    ...
    ...
    super(name, points);
}
Run Code Online (Sandbox Code Playgroud)

对于c++来说真的很陌生,很难理解它的语法。问候,

Fre*_*pin 5

初始化派生类的基类的唯一方法是在构造函数的初始化列表中。这是冒号之后、函数体之前的东西。没有其他正常的方法可以做到这一点。

HumanPlayer() :
        Player("...", list_of_points)
{
...
}
Run Code Online (Sandbox Code Playgroud)

如果您确实必须在构造函数的主体“中”初始化基类,而不是在列表中,则必须修改代码 - 例如,通过在基类中引入“initialize()”函数或使用“pimpl idiom” ”。