class A;
class B;
class C:public A //C为A的子类,A为C的父类
{
};
class D:public A,public B //D为A和B的子类,A和B均为D的父类
{
};class A;
class B;
//class B:public A; 错误
class A{};
class B:public A{}; //正确
class A; //声明
class B:public A{}; //错误
class A{};
class A
{
};
class B :public A //单一继承
{
};
class A{};
class B {};
class C :public B, public A //多重继承
{
};
class A{};
class B :public A
{};
class C :public B
{
};

class A
{
public:
A(int a) :m_a(a) {}
int getMa() { return m_a; }
private:
int m_a;
};
class B :public A
{
public:
B(int a, int b) :A(a), m_b(b) {}
private:
int m_b;
};
class C :public A
{
public:
C(int a, int c) :A(a), m_c(c) {}
private:
int m_c;
};
class D :public B, public C
{
public:
D(int a, int b, int c, int d) :B(a, b), C(a, c), m_d(d) {}
void func()
{
/*错误,访问不明确
std::cout << getMa();*/
//正确,通过B访问getMa()
std::cout << B::getMa();
}
private:
int m_d;
};class A
{
public:
A(int a) :m_a(a) {}
int getMa() { return m_a; }
private:
int m_a;
};
class B :virtual public A
{
public:
B(int a, int b) :A(a), m_b(b) {}
private:
int m_b;
};
class C :virtual public A
{
public:
C(int a, int c) :A(a), m_c(c) {}
private:
int m_c;
};
class D :virtual public B, virtual public C
{
public:
D(int a, int b, int c, int d) :B(a, b), C(a, c), m_d(d) {}
void func()
{
//都正确,因为A的内容在整个继承体系中只保存了一份
std::cout << getMa();
std::cout << A::getMa();
}
private:
int m_d;
};