C ++纯虚函数也是定义还是只是声明?

问题描述 投票:1回答:1

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

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

c++ declaration definition virtual-functions pure-virtual
1个回答
-1
投票

一个虚函数是一个函数,它是一个可继承和可覆盖的函数,它将支持动态调度。理想情况下,这就是我们所说的运行时多态性。简而言之,虚函数提供了一个要执行的目标函数,我们在编译时不知道。假设您扩展了具有虚函数的类,您可以使用基类指针使用多态来在derrived类中执行该函数。

更多关于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

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

*编辑您可以提供默认实现,但您必须使用纯虚函数覆盖此基类的派生类*

© www.soinside.com 2019 - 2024. All rights reserved.