C++ c++;:解释此函数声明

C++ c++;:解释此函数声明,c++,syntax,function-declaration,C++,Syntax,Function Declaration,我不明白那=0是什么部分…我们试图传达什么?它是一个-基类中没有定义,使其成为一个抽象类,任何从PageNavigator继承的实例化类都必须定义此函数。'=0'表示它是一个纯虚拟方法。必须在继承类中重写它 如果一个类有一个纯虚方法,它被认为是抽象的。无法创建抽象类的实例(对象)。它们仅用作基类 奇怪的细节:'=0'并不意味着方法没有定义(没有正文)。您仍然可以提供方法体,例如: class PageNavigator { public: // Opens a URL with the g

我不明白那=0是什么部分…我们试图传达什么?

它是一个-基类中没有定义,使其成为一个抽象类,任何从PageNavigator继承的实例化类都必须定义此函数。

'=0'表示它是一个纯虚拟方法。必须在继承类中重写它

如果一个类有一个纯虚方法,它被认为是抽象的。无法创建抽象类的实例(对象)。它们仅用作基类

奇怪的细节:'=0'并不意味着方法没有定义(没有正文)。您仍然可以提供方法体,例如:

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;
};
A类
{
公众:
虚空f()=0;
虚拟~A(){}
};
void A::f()
{

std::coutThe=0表示该函数是纯虚函数或抽象函数,这在实践中意味着两件事:

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


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

关键字virtual不是已经这么说了吗?或者你的意思是它是一个空函数:相当于用
{0>替换
=0;
否,
=0;
意味着没有明确定义实现。因此,您无法实例化此类。相反,您需要派生一个子类并在子类中实现此方法,然后实例化该类。好的,因此拥有
{}
意味着您可以实例化该类并调用
OpenURL()
method?@deOwalk:不带
=0
的虚拟函数需要有实现,并且不必在派生类中重写。带
=0
的虚拟函数不必(但可以)具有实现,并且需要在派生类中重写。您需要实例化子类,因为抽象类无法实例化。我看不到函数的定义。我看到纯虚拟函数的声明。纯是由于=0;语法。具有此类函数的类自动抽象,无法实例化。它们只能用作基类。实例化要求您在某些派生类中重写这些函数。注意到更改并编辑了标题…thanx
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";
}