解释纯虚函数初始化
在 C 中,纯虚函数是使用语法“virtual void fun() = 0;”声明的。 ”。这种非常规的“0”初始化引发了对其目的和必要性的疑问。
背景:虚函数和虚函数表
虚函数允许类继承不同的方法基于对象类型的实现。 C 使用虚拟表(vtable)来存储每个对象的这些方法的地址。当一个函数被调用时,该函数的 vtable 条目指向适当的方法实现。
“0”初始化的重要性
纯虚函数的初始化带有“0”的函数对于 vtable 的实现不是必需的。然而,C 的创建者 Bjarne Stroustrup 选择了这种语法,因为它提供了一种方便的方法来实现两个重要目标:
1。区分纯虚函数
“0”初始化表示函数是纯虚函数,这意味着必须在派生类中重写它。这可以防止直接在基类中使用纯虚函数并强制执行适当的多态性。
2.避免歧义
如果没有纯虚函数的专用语法,在尝试定义默认值为 0 的函数时可能会出现混乱。纯虚函数专门使用“0”阐明了其目的并与常规函数有明显区别。
注意:用“0”初始化纯虚函数并不会设置相应的值vtable 条目为 NULL。 vtable 的实现因不同的编译器而异,并且可能涉及处理纯虚函数的其他技术。
以上是C语言中为什么用'= 0”来初始化纯虚函数?的详细内容。更多信息请关注PHP中文网其他相关文章!