面试真题

C++ · 简单 · 字节跳动

怎么解决C++菱形继承

简单 C++ 🎤 字节跳动
参考答案
结论:C++菱形继承用虚继承解决。要点:1.中间类继承公共基类加virtual关键字(如class B: virtual public A);2.虚继承使底层基类在派生类对象中仅一份实例,消除二义性;3.虚基类构造由最底层派生类直接调用,避免多次初始化;4.内存布局引入虚基类指针,有少量开销。原理:非虚继承时D含两份A成员,访问冲突;虚继承共享单一子对象。示例:class D: public B, public C {}; d.a无歧义。
题目整理自公开面经,答案由校招宝自研生成,仅供参考