C 是纯虚拟函数,也是一个定义或仅声明
C++ Is a pure virtual function also a definition or only a declaration?
在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
对于您的问题,纯虚拟函数是声明。,不需要定义。
*编辑您可以提供默认实现,但必须在此基类的派生类中覆盖具有纯虚拟函数 *
相关文章:
- 此代码是否违反一个定义规则
- 静态结构和一个定义规则
- 为什么转换函数声明不需要至少一个定义类型说明符
- 只有一个定义/声明时标头声明变量的多堆定义错误
- 一个定义规则 - 编译
- 为什么传递给函数 set::itrator 而不是 const_iterator 违反了一个定义规则?
- 内联函数和一个定义规则
- 如何在C 中应用ODR(一个定义规则)
- C++ 多个定义,即使只给出了一个定义
- std::integral_constant<T, v>::value 总是有一个定义吗?
- 为什么这不违反一个定义规则
- C 是纯虚拟函数,也是一个定义或仅声明
- 从标准库重新定义函数是否违反了一个定义规则
- 是否使用“ __Date__”或“ __Time__”违反了一个定义规则
- 非静态数据成员和一个定义规则
- 如何在C++中声明一个定义为func(cv::Mat &img)的函数
- 现代C和C :可以将一个定义的结构用于其他声明的结构
- C 是平行阵列一个定义的结构
- 当一个定义位于命名空间中时不明确的函数调用
- C++:同名的文件范围常量违反了一个定义规则