21xrx.com
2024-12-22 23:22:10 Sunday
登录
文章检索 我的文章 写文章
C++中的父类初始化方法
2023-06-29 11:53:32 深夜i     --     --
C++语言 父类构造函数 参数传递 虚函数 继承关系

在C++中,一个类可以继承自另一个类,从而获得它的成员函数和成员变量。这个被继承的类称为父类或基类,而新的类称为子类或派生类。当一个子类对象被创建时,它的父类对象也需要被初始化。在这里,我们将讨论如何在C++中对父类进行初始化。

父类初始化方法可以通过两种方式实现。第一种方式是使用默认构造函数,这种方式在C++中很常见。默认构造函数是不带参数的构造函数。它将创建一个对象,同时为该对象的成员变量设置默认值。在子类中,调用父类的默认构造函数就可以将父类的成员变量初始化。需要注意的是,在子类的构造函数中并不需要显式地调用父类的构造函数,因为默认情况下,子类的构造函数会自动调用父类的默认构造函数。

第二种方式是调用父类的参数化构造函数。参数化构造函数与默认构造函数不同,它可以接收参数并根据参数设置成员变量值。在子类的构造函数中,如果需要设置父类的成员变量值,则必须显式地调用父类的参数化构造函数。在这种情况下,需要使用初始化列表来传递参数。

下面是一个示例程序,用于演示如何对父类进行初始化:


#include <iostream>

using namespace std;

class Parent {

public:

  Parent()

    cout << "Parent default constructor called." << endl;

  

  Parent(int x, int y)

    cout << "Parent parameterized constructor called." << endl;

    this->x = x;

    this->y = y;

  

protected:

  int x, y;

};

class Child : public Parent {

public:

  Child()

    cout << "Child default constructor called." << endl;

  

  Child(int x, int y, int z) : Parent(x, y)

    cout << "Child parameterized constructor called." << endl;

    this->z = z;

  

  void display()

    cout << "x = " << x << "

private:

  int z;

};

int main() {

  Child c1; // 调用 Child 的默认构造函数

  c1.display();

  Child c2(1, 2, 3); // 调用 Child 的参数化构造函数

  c2.display();

  return 0;

}

在上面的代码中,我们定义了一个名为Parent的类和一个名为Child的类。Child类继承自Parent类。Parent类有两个构造函数,一个默认构造函数和一个参数化构造函数。Child类有一个默认构造函数和一个参数化构造函数。当我们创建Child类的对象时,它的父类对象也将被创建并进行初始化。在Child类的默认构造函数中,我们并没有显式地调用父类的构造函数,因为默认情况下,子类的构造函数会自动调用父类的默认构造函数。在Child类的参数化构造函数中,我们显式地调用了父类的参数化构造函数,并使用初始化列表来传递参数。

总结来说,C++中的父类初始化方法有两种:使用默认构造函数和调用父类的参数化构造函数。需要注意的是,在子类中,调用父类的构造函数是必须的。在默认情况下,子类的构造函数会自动调用父类的默认构造函数。如果需要调用父类的参数化构造函数,可以使用初始化列表来传递参数。

  
  

评论区

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