📜  Heredar 构造函数 c++ (1)

📅  最后修改于: 2023-12-03 15:15:30.689000             🧑  作者: Mango

C++中的Heredar构造函数

在C++中,Heredar构造函数是用于在派生类中调用基类的构造函数的一种特殊类型的构造函数。这个构造函数的名称与其所在的类名称相同,并且可以通过在函数名称前面添加基类名称和双冒号来调用基类构造函数。

语法
class B {
public:
    B(int a);
};

class D : public B {
public:
    D(int b) : B(b) {
        // other initializations
    }
};

在上面的代码中,D类是从B类继承的。D类的构造函数调用了B类的构造函数并传入参数b,这样就可以初始化B类的成员变量。此后,D类的构造函数可以继续完成其余的初始化工作。

注意事项
  • 当派生类的对象被创建时,先调用基类构造函数,然后才调用派生类的构造函数。

  • 派生类不会继承基类的构造函数。

  • 如果派生类没有定义构造函数,则编译器会自动生成默认构造函数。

  • 如果派生类定义了构造函数,则必须在构造函数初始化列表中显式调用基类的构造函数。

  • 派生类可以调用任何可访问的基类的构造函数,但必须在初始化列表中调用基类构造函数。

示例代码
#include<iostream>

using namespace std;

class Shape{
public:
    Shape(int a){
        cout<<"Shape的面积:"<<a<<endl;
    }
};

class Rectangle: public Shape{
public:
    Rectangle(int a, int b):Shape(a){
        cout<<"Rectangle的面积:"<<a*b<<endl;
    }
};

int main(){
    Rectangle Rect(5,7);
    return 0;
}

输出结果:

Shape的面积:5
Rectangle的面积:35

在上面的代码中,Shape类和Rectangle类都有构造函数,其中Rectangle类是从Shape类继承的。在Rectangle类的构造函数中,我们调用了Shape类的构造函数来初始化Shape类的成员变量。然后计算出Rectangle类的面积并输出。