所谓菱形继承,就是一个父类有两个子类对象,然后又有一个类继承了这两个子类对象。
这样会导致该类中有两份数据,造成数据的浪费,一个解决办法就是使用虚继承。
让两个子类virtual继承父类,那么则会保留两个虚基类指针,在类继承这两个对象时,则会保留这个虚基类指针,同时数据也会只有一份,可以通过虚基类指针在虚基类表中找到数据的位置。
所谓菱形继承,就是一个父类有两个子类对象,然后又有一个类继承了这两个子类对象。
这样会导致该类中有两份数据,造成数据的浪费,一个解决办法就是使用虚继承。
让两个子类virtual继承父类,那么则会保留两个虚基类指针,在类继承这两个对象时,则会保留这个虚基类指针,同时数据也会只有一份,可以通过虚基类指针在虚基类表中找到数据的位置。