《Effective C++》条款33
2023-12-13 05:55:44
避免遮掩继承而来的名称
int x = 1; int main() { double x = 0.5; cout << x << endl; }
局部域会掩盖全局域,所以会输出0.5。
class Base { public: virtual void f1(int x); void f2(); }; class Derived: public Base { public: void f1(); void f2(); }; int main() { Derived d; d.f2(); // 正确 d.f1(2); // 错误 }
?这种情况下,Base类内的函数与Derived类内的函数构成隐藏,所以d.f1(2)无法调用到Base类内的函数。
加上using声明式就解决了,构成了函数重载。
class Derived: public Base { public: using Base::f1; void f1(); void f2(); }; int main() { Derived d; d.f2(); // 正确 d.f1(2); // 正确 }
文章来源:https://blog.csdn.net/qq_64863535/article/details/134843230
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!