C ++纯粹的虚函数还是定义还是声明?

时间:2019-03-06 20:08:44

标签: c++ declaration definition virtual-functions pure-virtual

在C ++编程课程中,我了解了定义和声明之间的区别。没有函数体的函数是声明,而带有函数体的函数是定义。后来我了解了纯虚函数。纯虚函数没有函数体,但已使用= 0;“初始化”。这是否意味着纯虚函数是一个定义,还是仅被视为声明?

编辑:我不认为这是pure virtual function with implementation的重复,因为问题“这意味着纯虚函数是一个定义还是仅被视为声明?”没有答案。

1 个答案:

答案 0 :(得分:-1)

  

重要功能是可继承且可重写的功能   支持动态调度的功能。理想情况下,这就是我们   调用运行时多态。简而言之,虚函数   提供要执行的目标函数,我们不知道   编译时间。假设您扩展了一个具有虚拟   函数,您就可以使用多态来执行   派生类中的函数,使用基类指针。

有关https://www.geeksforgeeks.org/virtual-functions-and-runtime-polymorphism-in-c-set-1-introduction/的更多信息

  

纯虚函数或纯虚方法是虚函数   如果派生类要求由派生类实现   类不是抽象的。

需要注意的一点是,如果您在类中具有纯虚函数,则不能将其实例化为对象。

看下面的例子

class Base {
public:
    virtual string getType() = 0;
}

class Derived : public base {
public:
    string getType();
}

string
derived::getType() {
    //do necessary stuff <------------------ (1)
}

Base* myBase = new Derived(); // OK
myBase->getType() //this will call the logic at (1).That's in the derived class but not base

Base* myBase2 = new Base();//Error

对于您的问题,纯虚函数是一个声明。并且不需要定义。

* EDIT您可以提供默认的实现,但必须使用纯虚函数*在该基类的派生类中覆盖*