70 lines · cpp
1#include <stdio.h>2#include <stdint.h>3 4class A5{6public:7 A(int a) : 8 m_a(a)9 {10 }11 virtual ~A(){}12 virtual int get2() const { return m_a; }13 virtual int get() const { return m_a; }14protected:15 int m_a; 16};17 18class B : public A19{20public:21 B(int a, int b) : 22 A(a),23 m_b(b)24 {25 }26 27 ~B() override28 {29 }30 31 int get2() const override32 {33 return m_b;34 }35 int get() const override36 {37 return m_b;38 } 39 40protected:41 int m_b;42};43 44struct C45{46 C(int c) : m_c(c){}47 virtual ~C(){}48 int m_c;49};50 51class D : public C, public B52{53public:54 D(int a, int b, int c, int d) : 55 C(c),56 B(a, b),57 m_d(d)58 {59 }60protected:61 int m_d;62};63int main (int argc, char const *argv[], char const *envp[])64{65 D *good_d = new D(1, 2, 3, 4);66 D *d = nullptr;67 return d->get();68}69 70