C++在一个类中使用了什么意思?

Wil*_*mKF 8 c++ language-features using

在类定义中使用是什么意思?

class myClass {
public:
  [...]
  using anotherClass::method;
};
Run Code Online (Sandbox Code Playgroud)

asc*_*ler 18

该声明取消隐藏基类成员.这通常用于允许成员函数的重载.例:

class Base {
public:
   void method() const;
};

class Derived : public Base {
public:
   void method(int n) const;
   // Without the using, you would get compile errors on d.method();
   using Base::method;
};
Run Code Online (Sandbox Code Playgroud)


Win*_*ert 6

我见过的情况:

class A
{
    void foo(int);
    void foo(float);
}

class B : public A
{
    void foo(string);
}

B b;
b.foo(12); // won't work!
Run Code Online (Sandbox Code Playgroud)

因为我在B中使用不同的签名实现了一个新的foo函数,所以它隐藏了来自A的foo函数.为了覆盖这种行为,我会这样做:

   class B : public A
   {
       void foo(string);
       using A::foo;
   }
Run Code Online (Sandbox Code Playgroud)