条款33:避免遮掩继承而来的名称
int x;
void someFunc() {
double x;
std::cin >> x;
}class Base {
public:
virtual void mf1() = 0;
virtual void mf1(int);
virtual void mf2();
void mf3();
void mf3(int);
};
class Derived: public Base {
public:
virtual void mf1();
void mf3();
void mf4();
};
Derived d;
d.mf1(); // ok,调用 Derived::mf1()
d.mf1(x); // fail,因为 Derived::mf1() 遮掩掉了 Base::mf1() 和 Base::mf1(int)
d.mf2(); // ok,调用 Base::mf2()
d.mf3(); // ok,调用 Derived::mf3()
d.mf3(x); // fail,因为 Derived::mf3() 遮掩掉了 Base::mf3() 和 Base::mf3(int)Last updated