什么是“= 0;”在C ++中声明纯虚函数时做什么?

时间:2012-02-14 15:36:23

标签: c++ virtual

  

可能重复:
  Why pure virtual function is initialized by 0?

我知道,为了声明一个纯虚函数,你需要使用“= 0;”语法,如:

class Foo  
{
protected:
    Foo();
    virtual int getValue() = 0;
};

我的问题是,(在编译器的内部工作中)究竟是什么“= 0;”语法呢?它实际上是否将函数指针设置为零?它只是一个意图陈述,就像Java和C#中的“抽象”保留字一样,如果是这样,为什么不在语言中添加诸如“abstract”之类的保留字而不是使用这种神秘的语法? / p>

3 个答案:

答案 0 :(得分:1)

它声明了一个'纯虚拟'功能。 = 0 基本上是,就像另一个'纯'关键字一样。此问题与您的问题有关:Why is a pure virtual function initialized by 0?

纯虚函数根本没有主体,必须由任何继承它的类定义:http://www.learncpp.com/cpp-tutorial/126-pure-virtual-functions-abstract-base-classes-and-interface-classes/

答案 1 :(得分:0)

这表示没有“默认”实施。任何派生类都需要实现它。

答案 2 :(得分:0)

它强制您在子类中定义它。