/ NOTES

《Effective C++》读书笔记(七)

《Effective C++》读书笔记(七)

《 Effective C++ 改善程序与设计的 55 个具体做法》继承与面向对象设计

using 声明式

假设基类的定义为

class Base
{
public:
    void mf3();
    void mf3(double);
    // ...
}

然后有个派生类想继承函数 mf3 ,并且还想重载

class Derived: public Base
{
public:
    void mf3();
}

但是此时假如

Derived d;
d.mf3();
d.mf3(x); // 错误

会发现第二条语句错误,这是因为 Base::mf3 被 Derived::mf3 的作用域遮掩

此时可以使用 using 声明式解决这个问题

class Derived: public Base
{
public:
    using Base::mf3;
    void mf3();
}

即可让 Base 类内名为 mf3 的所有东西在派生类的作用域内都可见