C++中的多重继承、钻石继承和虚继承

多重继承、钻石继承、虚继承
1、多重继承
在C++中子类可以有多个父类,按照继承表的顺序继承父类中的所有成员,并按照继承表调用父类的构造函数。
在子类中按照继承顺序排列父类,并且会标记每个父类的位置。
当父类的指针或引用指向子类对象时,编译器会自动计算出父类在子类中的位置。

2、钻石继承
假如一个子类继承了多个父类,而这多个父类有一个共同的父类,爷爷类中的成员会在孙子类中存在多份,这种继承叫钻石继承。
这种继承并不会产生错误,孙子类访问祖先的成员时必须使用 父类名::成员名,重点是这种继承方式会造成冗余浪费内存。
注意:在创建孙子类时会多次调用祖先类的构造函数,销毁函数类时也会多次调用祖先类的析构函数。

3、虚继承 virtual
在进行钻石结构继承时,如果父类继承祖先类时使用了virtual关键字,那么在孙子类中只保留一份祖先类的成员,也只会调用一次祖先类的析构、析构、拷贝函数。
注意:使用虚继承时子类中会多一个指针指向从父类中继承的成员。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值