70 lines
906 B
C++
70 lines
906 B
C++
#include <stdio.h>
|
|
#include <stdint.h>
|
|
|
|
class A
|
|
{
|
|
public:
|
|
A(int a) :
|
|
m_a(a)
|
|
{
|
|
}
|
|
virtual ~A(){}
|
|
virtual int get2() const { return m_a; }
|
|
virtual int get() const { return m_a; }
|
|
protected:
|
|
int m_a;
|
|
};
|
|
|
|
class B : public A
|
|
{
|
|
public:
|
|
B(int a, int b) :
|
|
A(a),
|
|
m_b(b)
|
|
{
|
|
}
|
|
|
|
~B() override
|
|
{
|
|
}
|
|
|
|
int get2() const override
|
|
{
|
|
return m_b;
|
|
}
|
|
int get() const override
|
|
{
|
|
return m_b;
|
|
}
|
|
|
|
protected:
|
|
int m_b;
|
|
};
|
|
|
|
struct C
|
|
{
|
|
C(int c) : m_c(c){}
|
|
virtual ~C(){}
|
|
int m_c;
|
|
};
|
|
|
|
class D : public C, public B
|
|
{
|
|
public:
|
|
D(int a, int b, int c, int d) :
|
|
C(c),
|
|
B(a, b),
|
|
m_d(d)
|
|
{
|
|
}
|
|
protected:
|
|
int m_d;
|
|
};
|
|
int main (int argc, char const *argv[], char const *envp[])
|
|
{
|
|
D *good_d = new D(1, 2, 3, 4);
|
|
D *d = nullptr;
|
|
return d->get();
|
|
}
|
|
|