理解用'0'初始化纯虚函数
声明纯虚函数时,你可能会注意到它们总是被分配给值 0:
virtual void fun() = 0;
这种做法提出了一个问题:为什么纯虚函数是用 0 初始化。
错误的假设
最初,您可能认为值 0 被分配给纯虚函数以将相应的 vtable 条目设置为 NULL。然而,这个假设是不正确的。分配给纯虚函数的值不一定将 vtable 条目设置为 NULL。
'0' 的真正原因
=0 语法的使用纯虚函数的诞生可以追溯到 Bjarne Stroustrup 在 C 上的早期工作。他没有引入像“pure”这样的新关键字,而是选择了 =0 语法,因为他相信当时它更有机会被 C 社区接受。
正如 Stroustrup 本人在他的书中所说, “C 的设计与演变”中, =0 语法并不是为了将 vtable 条目设置为 NULL。而且,将vtable项设置为NULL并不是纯虚函数的理想实现策略。
结论
纯虚函数的初始化为0与将 vtable 条目设置为 NULL。相反,在 C 开发的早期阶段,选择 =0 语法纯粹是出于可读性和兼容性的原因。
以上是为什么纯虚函数初始化为'0”?的详细内容。更多信息请关注PHP中文网其他相关文章!