#include using namespace std; /* ereditarietà a diamante: A <-- B A <-- C B <-- D C <-- D */ void nonVirtualInheritance(); void virtualInheritance(); int main(){ //nonVirtualInheritance(); virtualInheritance(); return 0; } void nonVirtualInheritance(){ class A{ public: int size = 7; }; class B : public A{ public: int b; }; class C : public A{ public: int c; }; class D : public B, public C{ public: int d; }; /* Adesso B ha una copia di A, C ha una copia di A, D ha una copia di B e una copia di C. Implica che D ha due copie di A. Se provo a stampare size, cosa succede? */ D obj; //cout<