//每日心得:独上高楼,望尽天涯路
//日期:12.16
//学习内容:菱形继承
//重点:
//1、两个派生类继承同一个基类,又有一个类继承两个派生类
//2、问题:最后的类继承了两次第一个类的属性(但我们只要一份)
//3、利用虚继承 解决菱形继承的问题
//4、继承之前 加上关键字 virtual 虚继承
#include <iostream>
using namespace std;
//动物类
class Animal
{
public:
int m_age;
};
//羊类
class Sheep :virtual public Animal
{
};
//驼类
class Tuo :virtual public Animal
{
};
//羊驼类
class SheepTuo : public Sheep, public Tuo
{
};
void test1()
{
SheepTuo st;
st.Sheep::m_age = 18;
st.Tuo::m_age = 38;
//相同数据 加作用域区分
cout << "st.Sheep::m_age =" << st.Sheep::m_age << endl;
cout << "st.Tuo::m_age =" << st.Tuo::m_age << endl;
cout << "st.m_age = " << st.m_age << endl;
//羊驼年龄不明确,两份资源浪费
}
int main()
{
test1();
return 0;
}
//vbptr 虚基类指针 -> vbtable 虚基类列表
//v - virual 虚
//b - base 基类
//ptr - pointer 指针