C++ [ 继承与派生 ]

本文详细介绍了派生类的构造过程,包括成员继承的方式、构造函数的调用顺序及析构函数的执行流程。此外还讲解了隐藏规则、类型兼容规则及虚基类的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

派生新类:吸收已有类的成员、调整已有类成员和添加新的成员

class 派生类名:继承方式 基类名1, 继承方式 基类名2, .......

派生类成员声明;


继承方式有:public、protected、private(默认)

公有继承:基类的公有和保护乘员的访问属性在派生类中不变,基类的私有成员不能直接访问


类型兼容规则

在需要基类对象的任何地方,都可以使用公有派生类的对象来代替

1、派生类的对象赋值给基类对象

2、派生类的对象可以初始化基类的引用

3、派生类的对象的地址可以赋给指向基类的指针

在替代之后,派生类对象就可以作为基类的对象使用,但只能使用从基类继承的成员

class B{ ... }

class D: public B { ... }

B b1, *pb1; D d1;

b1 = p1;     B &bb = p1;    pb1 = &d1;


派生类构造函数

1、调用基类构造函数,调用顺序按照被继承时声明的顺序

2、调用内嵌成员对象的构造函数,调用顺序按照在类中声明的顺序

3、派生类的构造函数体中的内容

class C:public B2, public B1,public B3{

public:

C(int a, int b ,int c, int d):B1(a), memberB2(d), memberB1(c), B2(b){ }

privae:

B1 memberB1; B2 memberB2; B3 member B3;

}

调用顺序:  B2  B1  B3   B1  B2  B3

析构函数:相反


隐藏规则:内层变量隐藏了外层同名变量

D d;

d.nv = 1; d.fun();

d.B1::nv =1; d.B1::fun();

d.B2::nv =2; d.B2::fun();

虚基类:从不同的路径继承过来的同名数据成员在内存中只有一个拷贝,同一个函数名也只有一个隐射。

派生类和虚基类的成员一起维护同一个内存数据拷贝。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值