class horse{/*some data and functions*/}
class bird{/*some data and functions*/}
class pegasus : public horse, public bird
{}
如果上面有类,那么为什么我要创建如下所述的
1)horse *temp = new pegasus;
而是我会创建像
2)pegasus *temp = new pegasus;
在第二种方法中,我可以访问马和鸟的功能,所有功能包括非虚拟,在第一种方法中,我无法访问飞马对象的非虚函数。
答案 0 :(得分:0)
当您需要将pegasus
对象视为horse
时,使用第一种方法,假装您不知道它也是bird
。只要你能做到,你应该,因为它可以让你改变实现类而不改变任何其他东西。这称为编程接口。
当您需要同时使用horse
对象的bird
和pegasus
方面时,可以使用第二种方法。这会对您可以分配给tmp
的对象施加更严格的约束,因为它必须提供这两个类的实现。