21xrx.com
2024-11-05 21:37:19 Tuesday
登录
文章检索 我的文章 写文章
C++中如何初始化子类对象的父类部分
2023-07-12 12:14:31 深夜i     --     --
C++ 初始化 子类对象 父类部分

在C++中,继承实现了面向对象编程的重要特性之一。通过继承,我们可以在一个类中复用另一个类的代码,同时也可以创建更加具体的子类来实现更复杂的行为。子类通过继承从父类中继承了许多属性和方法,其中包括父类的构造函数。如何初始化子类对象的父类部分呢?

在C++中,子类在构造函数中可以通过调用父类的构造函数来初始化父类部分。子类的构造函数可以通过以下两种方式调用父类的构造函数:

第一种方式是使用初始化列表。初始化列表对于创建子类对象时的父类初始化非常有用。在子类的构造函数的声明中,使用冒号并列出要初始化的成员变量和它们的初始值。在这个列表中,可以使用父类构造函数的调用语法,以初始化父类部分。如下所示:


class Base {

public:

  Base(int n)

    // do something

  

};

class Derived : public Base {

public:

  Derived(int n, double d) : Base(n), m_d(d)

    // do something

  

private:

  double m_d;

};

在这段代码中,Derived是Base的一个子类。在Derived的构造函数中,我们首先调用Base的构造函数,以初始化Base部分。然后,我们初始化子类中新增的成员变量m_d。

第二种方式是使用构造函数体。在构造函数体内部,你可以调用父类的构造函数。如下所示:


class Base {

public:

  Base(int n)

    // do something

  

};

class Derived : public Base {

public:

  Derived(int n, double d) : m_d(d) {

    Base::Base(n);  // 调用父类构造函数

    // do something

  }

private:

  double m_d;

};

在这个代码中,Derived的构造函数内部,我们首先调用Base的构造函数,然后在构造函数体中初始化子类中新增的成员变量m_d。

无论是使用初始化列表还是构造函数体,调用父类构造函数都是非常常见的操作。这两种方式都可以用来初始化子类对象的父类部分,以便子类对象可以正确地工作。

  
  

评论区

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