为什么纯虚函数初始化为0?我们总是声明一个纯虚函数:virtual void fun () = 0 ;即,它总是被赋值为0。我的理解是,这是将此函数的vtable条目初始化为NULL,此处的任何其他值都会导致编译时错误。这种理解是否正确?
3 回答
DIEA
TA贡献1820条经验 获得超2个赞
使用的原因=0
是Bjarne Stroustrup不认为他可以获得另一个关键字,例如在实现该功能时通过C ++社区的“纯粹”。这在他的书“C ++的设计与演变”第13.2.3节中有所描述:
选择好奇的= 0语法...因为当时我看不到接受新关键字的机会。
他还明确指出,这不需要将vtable条目设置为NULL,并且这样做不是实现纯虚函数的最佳方法。
德玛西亚99
TA贡献1770条经验 获得超3个赞
C ++标准的9.2节给出了类成员的语法。它包括这个产品:
pure-specifier: = 0
价值没有什么特别之处。“= 0”只是说“此函数是纯虚拟”的语法。它与初始化或空指针或数值零无关,尽管与这些事物的相似性可能具有助记符值。
- 3 回答
- 0 关注
- 735 浏览
添加回答
举报
0/150
提交
取消