C 是纯虚拟函数,也是一个定义或仅声明

C++ Is a pure virtual function also a definition or only a declaration?

本文关键字:一个 定义 声明 虚拟 函数      更新时间:2023-10-16

在C 编程课程中,我已经了解了定义和声明之间的差异。没有功能主体的功能是声明,并且具有功能主体的功能是一个定义。后来我了解了纯虚拟功能。纯虚拟函数没有功能主体,但使用= 0;"初始化"。这是否意味着纯虚拟函数是一个定义,还是仅被视为声明?

编辑:我认为这不是实现纯虚拟函数的重复,因为"这意味着纯虚拟函数是一个定义,还是仅被视为声明?"没有回答。

vitual函数是函数,是一种可遗传的且可超额的功能 功能将支持动态调度。理想情况下,这就是我们 调用运行时多态性。简而言之,虚拟功能 提供了要执行的目标函数,我们不知道 编译时间。假设您延长了一个虚拟的课程 功能,您可以使用使用多态性执行 使用基类指针在划线类中的功能。

更多地在https://www.geeksforgeeks.org/virtual-functions-and-runtime-polymormormormpism-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

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

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