Sobes.tech
Junior — Senior

Implementation of multiple inheritance without using virtual and its consequences

livecode

Task condition

It is necessary to demonstrate how to build a class hierarchy with multiple inheritance without using the virtual keyword, and then describe the problems this causes.

struct A {
    int value;
};

struct B : A { };

struct C : A { };

struct D : B, C { };

int main() {
    D obj;
    // access to the field value is ambiguous here
    // obj.value; → compilation error
    return 0;
}

In this example, class D inherits from B and C, which in turn inherit from A. Since virtual is not used, the object D contains two independent sub-objects of A, and attempting to access the value field becomes ambiguous, leading to a compilation error. It is necessary to explain how virtual inheritance resolves this problem and what additional costs it entails.