当前位置:  开发笔记 > 编程语言 > 正文

C++成员函数虚拟覆盖和重载同时进行

如何解决《C++成员函数虚拟覆盖和重载同时进行》经验,为你挑选了1个好方法。



1> jalf..:

简短的回答是"因为这就是重载解析在C++中的工作原理".

编译器在C类中搜索函数F,如果找到任何函数,它将停止搜索,并尝试在这些函数中选择一个候选者.如果在派生类中找不到匹配的函数,它只查看基类内部.

但是,您可以将基类函数显式引入派生类的命名空间:

struct C : public B {
  void f(void*) {}
  using B::f; // Add B's f function to C's namespace, allowing it to participate in overload resolution
};


可能想要添加一个关于函数隐藏的C++ FAQ的链接:http://www.parashift.com/c++-faq-lite/strange-inheritance.html#faq-23.9
@null:受损的名字并不重要.只有链接器才会看到错位的名称.但链接器不执行重载解析.这是由编译器完成的,它看到了原始的,未经修改的名称.
推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有