2
class PageNavigator {
 public:
  // Opens a URL with the given disposition.  The transition specifies how this
  // navigation should be recorded in the history system (for example, typed).
  virtual void OpenURL(const GURL& url, const GURL& referrer,
                       WindowOpenDisposition disposition,
                       PageTransition::Type transition) = 0;
};

それが何であるかわかりません=0; 一部...私たちは何を伝えようとしていますか?

4

3 に答える 3

10

「= 0」は、それが純粋な仮想メソッドであることを意味します。継承クラスでオーバーライドする必要があります。

クラスに純粋仮想メソッドがある場合、それは抽象と見なされます。抽象クラスのインスタンス (オブジェクト) は作成できません。これらは基本クラスとしてのみ使用することを意図しています。

興味深い詳細: '= 0' は、メソッドに定義がない (本体がない) という意味ではありません。メソッド本体を提供することもできます。

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

void A::f()
{
  std::cout << "This is A::f.\n";
}

class B : public A
{
 public:
  void f();
}

void B::f()
{
  A::f();
  std::cout << "And this is B::f.\n";
}
于 2010-06-23T11:42:12.610 に答える
3

これは純粋な仮想関数です。基本クラスには定義がないため、これは抽象クラスになり、PageNavigator から継承するインスタンス化可能なクラスはすべて、この関数を定義する必要があります。

于 2010-06-23T11:42:05.513 に答える
0

= 0 は、関数が純粋な仮想関数または抽象関数であることを意味し、実際には次の 2 つのことを意味します。

a) 抽象関数を持つクラスは抽象クラスです。抽象クラスをインスタンス化することはできません。

b) 実装でオーバーライドするサブクラスを定義する必要があります。

于 2010-06-23T11:46:44.467 に答える