多继承和虚基类

一.多继承机制存在哪些问题,怎么解决这些问题?——歧义性:相同名称的成员在内存中同时拥有多个拷贝,当通过派生类对象使用这些成员时,就会产生歧义性。作用域操作符虽然能解决歧义性问题,但并没有解决多个拷贝的问题。
多继承和虚基类

类D 的内存布局

多继承和虚基类
使用虚拟机制注意事项:1.若在虚基类中定义了带参数的构造函数,而没有定义默认构造函数,则必须在所有的直接或间接派生类中使用成员初始化列表调用虚基类的构造函数。注意:
* 如果没有虚拟继承,则只需要在直接派生类中使用成员初始化列表调用虚基类的构造函数。
* 在上例中,如果B,C,D都调用了A的构造函数,那么有效构造函数为调用该构造函数的类所定义的构造函数,每个继承的类都显示调用基类构造函数可以解决各个派生类定义的构造函数不一致的情况。
多继承和虚基类2.如果在同一继承层次中同时包含虚基类和非虚基类,C++编译器先调用虚基类的构造函数,再调用非虚基类的构造函数。3.如果虚基类是由非虚基类派生而来,同样遵循先调用基类构造函数,再调用派生类构造函数。(实际应用中并不建议使用多重继承,一则因为编译器问题,二则多重继承会带来二义性问题。单继承对描述事物已经提供了足够强大的功能。并非要使用多继承不可)二.多继承构造函数和析构函数的执行顺序多继承和虚基类析构函数的调用顺序与构造函数相反例如:多继承和虚基类基类指针与派生类指针的指向关系基类指针或引用可以在不进行显示类型转换的情况下指向派生类对象,但基类指针或引用只能用于调用基类方方法。派生类指针不可以指向基类对象。原文链接: https://www.cnblogs.com/happygirl-zjj/p/4635958.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/218919

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 上午10:22
下一篇 2023年2月13日 上午10:22

相关推荐