为了保证虚基类在派生类中只继承一次,应当在该基类的所有直接派生类中声明为虚基类,否则仍然会出现对基类的多次继承。
使用多重继承时要十分小心,经常会出现二义性问题。
很多程序员不提倡在程序中使用多重继承,只有在比较简单和不易出现二义性的情况或实在必要时才使用多重继承,能用单一继承解决的问题就不要使用多重继承。也正由于这个原因,C++之后的很多面向对象的编程语言(如Java、Smalltalk、C#、PHP等)并不支持多重继承。
使用多重继承时要十分小心,经常会出现二义性问题。
很多程序员不提倡在程序中使用多重继承,只有在比较简单和不易出现二义性的情况或实在必要时才使用多重继承,能用单一继承解决的问题就不要使用多重继承。也正由于这个原因,C++之后的很多面向对象的编程语言(如Java、Smalltalk、C#、PHP等)并不支持多重继承。
2016-07-06
在C++中,含有纯虚拟函数的类称为抽象类,它不能生成对象;在java中,含有抽象方法的类称为抽象类,同样不能生成对象。
2016-07-06
为什么老师在编写Soldier代码时没有#include "Person.h" ,却能用到Person类?
2016-07-06
Worker
Children
ChildLabourer
JIM
work
12
play
~ChildLabourer
~Children
~Worker
Children
ChildLabourer
JIM
work
12
play
~ChildLabourer
~Children
~Worker
Person
Worker
Children
ChildLabourer
eat
JIM
work
12
play
~ChildLabourer
~Children
~Worker
~Person
Worker
Children
ChildLabourer
eat
JIM
work
12
play
~ChildLabourer
~Children
~Worker
~Person
最新回答 / 兮蓅
首先,Soldier类保护继承Person类,Infantry公有继承Soldier类。这个时候Soldier的对象不能调用Person类中的work成员函数,说明Person中数据成员和成员函数不在其(Soldier)public下(因为Person中work的访问属性为public,如果是公有继承肯定可以访问)。那就剩下保护继承(私有继承情况更是不能)了。而Infantry是公有继承Soldoer类,如果Infantry中成员可以访问Person中的数据成员和成员函数也就说明了Soldier类中的成员...
2016-07-04