📅  最后修改于: 2023-12-03 15:15:30.689000             🧑  作者: Mango
在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
类的面积并输出。