#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++独特对多继承的支持,导致多个基类可能存在同名函数,继而默认在派生类中隐藏基类的非虚函数