21xrx.com
2025-04-11 23:10:36 Friday
文章检索 我的文章 写文章
C++中的父类初始化方法
2023-06-29 11:53:32 深夜i     7     0
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++中的父类初始化方法有两种:使用默认构造函数和调用父类的参数化构造函数。需要注意的是,在子类中,调用父类的构造函数是必须的。在默认情况下,子类的构造函数会自动调用父类的默认构造函数。如果需要调用父类的参数化构造函数,可以使用初始化列表来传递参数。

  
  

评论区

请求出错了