派生类函数名 原来会遮挡 基类函数名(可以用using 解决)
#include <iostream> using namespace std; class base { private: int x; public: virtual void mf1() = 0; virtual void mf1(int) {}; virtual void mf2() {}; void mf3() {}; void mf3(double) {}; }; class Derived:public base { public: using base::mf1; //让baseclass内名为mf1和mf3的所有东西可见 using base::mf3; virtual void mf1() {}; void mf3() {}; void mf4() {}; private: }; int main() { Derived d; int x = 0; d.mf1(); d.mf1(x);//报错 因为 derived::mf1 遮掩了 base::mf1 d.mf2(); d.mf3(); //d.mf3(x); //报错 同上 cin.get(); return 0; }
//可能原因:c++独特对多继承的支持,导致多个基类可能存在同名函数,继而默认在派生类中隐藏基类的非虚函数