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 表示该函数是纯虚函数或抽象函数,这在实践中意味着两件事:

a) 具有抽象函数的类是抽象类。您不能实例化抽象类。

b)您必须定义一个用实现覆盖它的子类。

于 2010-06-23T11:46:44.467 回答