C++继承是面向对象编程中的一种重要概念,它允许一个类(子类)从另一个类(父类)继承属性和行为,通过继承,子类可以重用父类的代码,并添加自己的特定功能。
继承方式
继承方式共分为三种,公有继承,保护继承和私有继承,需要注意的是三种继承方式都不能从父类中拿到其私有属性。(被隐藏了,但还是会继承下去)
-
公有继承格式为 class 子类名 : public 父类名,通过public关键字指定,派生类继承了基类的公有成员和保护成员,其中公有成员在子类中仍旧是公有成员,而保护成员则仍旧是保护的。
-
保护继承格式为 class 子类名 : protected 父类名 通过protected关键字指定,派生类继承基类的公有和保护成员,并在子类中都成为保护成员。
-
私有继承格式为 class 子类名 : private 父类名 通过private关键字指定,派生类继承基类的公有和保护成员,并在子类中都成为私有成员。
继承对象模型
父类中所有的非静态成员属性都会被子类继承下去,下面是代码验证
#include<iostream>
using namespace std;
class A{
private:
int a;
int b;
int c;
public:
A(int a,int b,int c):a(a),b(b),c(c){}
};
class B:private A{ //换成public或者protected下面结果都是一样的
public:
int d;
};
int main(){
cout << sizeof(A) << endl; //12
cout << sizeof(B) << endl; //16
}
继承构造和析构顺序
创建一个子类对象时,会有父类对象的创建,其中先调用父类对象的构造函数,再