纯虚函数在C++中的用途是什么?

pat*_*ney 21 c++ virtual-functions pure-virtual

我现在正在课堂上学习C++,而且我不太熟悉纯虚函数.我知道它们稍后在派生类中概述,但是如果你要在派生类中定义它,为什么要将它声明为等于0?

Ste*_*dit 34

简而言之,它是使类抽象,因此无法实例化,但子类可以覆盖纯虚方法以形成具体类.这是在C++中定义接口的好方法.

  • 我建议改变:"......一个孩子班可以......"到"......叶班必须......". (2认同)

Jim*_*uck 14

这会强制派生类定义函数.


Jef*_*f L 7

任何包含纯虚方法的类都是抽象的,也就是说,它不能被实例化.抽象类对于定义子类应该共享的一些核心行为很有用,但允许(实际上需要)子类单独实现抽象.

抽象类的一个例子:

class Foo {

    // pure virtual, must be implemented by subclasses
    virtual public void myMethod() = 0;

    // normal method, will be available to all subclasses,
    // but *can* be overridden
    virtual public void myOtherMethod();
};
Run Code Online (Sandbox Code Playgroud)

每个方法都是抽象的类可以用作接口,要求所有子类通过实现其中包含的所有方法来符合接口.

接口示例:

class Bar {

    // all method are pure virtual; subclasses must implement
    // all of them
    virtual public void myMethod() = 0;

    virtual public void myOtherMethod() = 0;
};
Run Code Online (Sandbox Code Playgroud)