C++中关于虚函数的问题
我在写项目的时候发现一个问题:
HIMCC是基类,有一个MCC_PMAC类是其子类,我自己写了个类MCC_MS类继承MCC_PMAC类,在MCC_MS中覆盖了MCC_PMAC的部分函数,并且是virtual的,问题是这样的我在某个地方
HIMCC* createMCC(){MCC_MS *pThis = new MCC_MS();return pThis;}
HIMCC* myMCC = CreateMCC();
当我用myMCC->调用HIMCC中的函数时,是虚函数,如果是MCC_MS中也有的,则会调用到MCC_MS中,但是MCC—MS中没有的话,就会调用到MCC_PMAC中,我不明白的是为何会调用到MCC_PMAC中。(注:MCC_MS中的虚函数都是覆盖MCC_PMAC的,) 继承 C++ 类
[解决办法]
子类没有覆盖的就会调用父类的.
难道你期待一个编译期的错误? 编译期没法检查.
在创建 MCC_MS 的虚函数表时, 如果 MCC_MS 没有对应的函数, 就会填 MCC_PMAC 对应函数的指针.
[解决办法]