在 C++ 中调用超类构造函数的规则是什么?


在 C++ 中,我们可以派生一些类。有时我们需要在调用派生类的构造函数时调用超类(基类)构造函数。与 Java 不同,对于超类没有引用变量。如果构造函数是非参数的,那么它将自动使用派生类调用,否则我们必须将超类构造函数放入派生类的初始化列表中。

在本例中,我们将首先看到没有参数的构造函数。

示例

 实时演示

#include <iostream>
using namespace std;
class MyBaseClass {
   public:
      MyBaseClass() {
         cout << "Constructor of base class" << endl;
      }
};
class MyDerivedClass : public MyBaseClass {
   public:
      MyDerivedClass() {
         cout << "Constructor of derived class" << endl;
      }
};
int main() {
   MyDerivedClass derived;
}

输出

Constructor of base class
Constructor of derived class

现在让我们看看可以采用参数的构造函数。

示例

 实时演示

#include <iostream>
using namespace std;
class MyBaseClass {
   public:
   MyBaseClass(int x) {
      cout << "Constructor of base class: " << x << endl;
   }
};
class MyDerivedClass : public MyBaseClass { //base constructor as initializer list
   public:
      MyDerivedClass(int y) : MyBaseClass(50) {
         cout << "Constructor of derived class: " << y << endl;
      }
};
int main() {
   MyDerivedClass derived(100);
}

输出

Constructor of base class: 50
Constructor of derived class: 100

更新于:2019 年 7 月 30 日

10K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

开始
Ads