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