21xrx.com
2024-12-27 22:12:27 Friday
登录
文章检索 我的文章 写文章
如何在C++子类中调用父类的构造函数?
2023-07-05 09:30:41 深夜i     --     --
C++ 子类 父类 构造函数 调用

C++是一种面向对象的编程语言,具有继承的特性。在编写子类时,经常需要调用父类的构造函数,以确保继承了父类的属性和行为。本文将介绍如何在C++子类中调用父类的构造函数。

在C++中,通过使用初始化列表来调用父类的构造函数。初始化列表是在子类构造函数的参数列表后面的冒号(:)后面指定的。它允许子类构造函数通过调用父类构造函数来初始化基类部分。

下面是一个例子:


#include <iostream>

using namespace std;

class Parent {

public:

  Parent() cout << "Parent constructor called." << endl;

};

class Child : public Parent {

public:

  Child() : Parent() cout << "Child constructor called." << endl;

};

int main()

  Child child; 

  return 0;

在这个例子中,我们定义了一个父类Parent和一个子类Child。Child继承了Parent的属性和行为。在Child的构造函数中,我们使用初始化列表调用了Parent的构造函数,以确保Child也拥有了Parent的属性和行为。

输出结果为:


Parent constructor called.

Child constructor called.

我们可以看到,父类的构造函数被首先调用,然后是子类的构造函数。

在一些情况下,父类可能有多个构造函数。在这种情况下,我们需要在初始化列表中指定要调用的父类构造函数的参数。例如:


#include <iostream>

using namespace std;

class Parent {

public:

  Parent() cout << "Parent constructor with no argument called." << endl;

  Parent(int x) cout << "Parent constructor with argument " << x << " called." << endl;

};

class Child : public Parent {

public:

  Child() : Parent(), ChildData(0) cout << "Child constructor with no argument called." << endl;

  Child(int x) : Parent(x), ChildData(x) cout << "Child constructor with argument " << x << " called." << endl;

private:

  int ChildData;

};

int main() {

  Child child1;

  Child child2(5);

  return 0;

}

在这个例子中,Parent有两个构造函数,一个是没有参数的,另一个是有一个int参数的。Child也有两个构造函数,一个是没有参数的,另一个是有一个int参数的。在子类构造函数的初始化列表中,我们指定了要调用的父类构造函数及其参数。

输出结果为:


Parent constructor with no argument called.

Child constructor with no argument called.

Parent constructor with argument 5 called.

Child constructor with argument 5 called.

我们可以看到,父类的不同构造函数被正确调用,子类也被正确初始化。

总结:

在C++中,我们可以使用初始化列表来调用父类的构造函数,以确保子类继承了其所有属性和行为。在初始化列表中,我们可以指定要调用的父类构造函数及其参数。了解这一点很重要,因为在实际编程中,我们经常需要在子类中调用父类的构造函数。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复