在面向对象编程领域,纯虚函数作为一个基本概念脱颖而出。使用语法 virtual void fun () = 0 ; 声明这些函数会引发一个问题:为什么它们必须用 0 初始化?
纯虚函数的探索
纯虚函数在定义抽象类和接口时起着至关重要的作用。他们声明一个方法,但将其实现留给派生类。这使开发人员能够创建多态结构,其中不同类型的对象可以共享通用接口。
零之谜
将 0 分配给纯虚函数的神秘赋值几十年来一直引起程序员的兴趣。一种流行的理解表明,这种初始化将它们的 vtable 条目设置为 NULL,本质上使它们无法调用。然而,这个假设并不完全准确。
真实含义揭晓
在纯虚函数声明中使用 0 的实际原因源于 Bjarne 面临的实际限制Stroustrup,C 的建筑师。 Stroustrup 在他的开创性著作《C 的设计与演变》中揭示了由于缺乏对其他关键字的支持而选择了特殊的语法。
替代实现
此外,Stroustrup 强调,将 vtable 项设置为 NULL 并不是实现纯虚函数的最佳方法。虽然某些编译器可能以这种方式处理它,但它不是通用标准。初始化值的选择是一个实现细节,不同的 C 编译器可能会有所不同。
结论
纯虚函数的初始化与 0 关系不大vtable 操作更多地与语言发展的历史和实际限制有关。它提醒人们在 C 等强大编程工具的发展过程中经常采取的务实方法。
以上是为什么纯虚函数初始化为0?的详细内容。更多信息请关注PHP中文网其他相关文章!