C++类的多重继承
讲解C++类继承的文章网上很多,但是关于类的多重继承(注意区别多继承和多重继承)的文章并不多。下面是我在写程序的时候遇到的问题以及通过自己实验得到的解决办法。
在使用类的继承的时候,一直有一个疑惑,假设基类为B,A类是B的派生类,C类是A类的派生类,D类是C类的派生类,那么像这种多重继承的关系,其函数调用关系是怎么样的呢。
假设在D类中需要调用函数fun()(D类中未定义fun函数),而fun函数在A,B,C类中均有定义,那么此时D类调用的究竟是哪个类中的函数呢?答案是C类,也就是说,调用的是其直接基类中的函数。依此可以推断,当派生类调用一个函数的时候,会从其直接继承的基类开始一直向更深层次的基类寻找函数的定义,直到找到该函数的定义为止。
上面的例子中,类的继承关系为B->A->C->D,那么若D类中要调用函数fun,程序会先从C类中找fun的定义,若没找到,则在A类中找,若还是没找到,则在B类中找。
当然,若D类中有fun函数的定义,则调用的是D类中的函数。
也可以在D类中使用 类名::fun() 来调用对应类中定义的fun函数。