从派生类调用重载的基础构造函数

use*_*828 -4 c++ c++11

如果我理解正确,则始终使用创建派生类的对象来调用基类构造函数.有没有办法在创建派生对象时调用重载的基类构造函数?

Joh*_*ing 5

是的,通过初始化列表:

class Base
{
public:
  Base (int n) : mN(n) {}
private:
  int mN;
};

class Derived : public Base
{
public:
  Derived() : Base (42) {};
         // ^^^^^^^^^^^    
         // Initialization List
};
Run Code Online (Sandbox Code Playgroud)

有关初始化列表语法的更多信息,请参阅以下问题:

构造函数中这个奇怪的冒号成员(":")语法是什么?