具有相同名称但参数不同的 C++ 方法

标签 c++

为什么在 C++ 中这样做是为了让编译器在您重写其中一个方法时“忘记”具有相同名称但参数不同的其他方法?

struct A {
  void virtual f() {}
  void virtual f(int) {}
  void testA() {f(); f(1);} // OK
 };

struct B :  public A {
  void f() override {}
  void testB() {f(); f(1);} // Error
};

看来这是毫无意义的行为……不是吗?

最佳答案

但是您可以添加一个 using 语句来使所有 A::f 方法可见,类似于此:

  struct B :  public A {
    using A::f;
    void f() override {}
    void testB() {f(); f(1);} // No Error
  };

关于具有相同名称但参数不同的 C++ 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36125318/

相关文章:

c++ - 单例方法之间的区别

c++ - 强制返回要分配的对象

c++ - FreeLibrary() 在 Linux 上工作吗?

c++ - 应用程序中的嵌入式控制台工具功能

c++ - Apple Mach-O Linker 错误,我不知道该怎么办

c++ - 我必须在声明后清除 C++ vector 吗?

c++ - 使用 -mpopcnt 编译会导致 Illegal instruction 错误

c++ - Makefile 没有按照我告诉它的方式构建对象

c++ - 使用基于嵌套值的索引 boost 多索引容器

c++ - while 和 for 循环的嵌套默认值