0

私は最近using、基本クラス関数を派生クラスの名前空間にインポートするための使用を発見しました (非表示になっている場合)。私はそれを使用して、派生クラスの関数の実装として基本クラスから関数をインポートしようとしていました:

class A {
public:
  virtual void foo() = 0;
};

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

class C : public A, public B {
public:
  using B::foo;
};


int main()
{
  C c;
}

A::foo()これは、.NET の純粋な仮想関数であるため、コンパイルされませんCusing B::foo;の実装になることを期待していましたfoo()。なぜそうではないのですか?

4

2 に答える 2

0

usingin C++ は異なる意味を持ち、名前空間名を明示的に入力せずに別の名前空間の関数/オブジェクトにアクセスできるようにすることを指定します。オーバーライドとは関係ありません。

于 2013-06-27T09:08:34.180 に答える