为了账号安全,请及时绑定邮箱和手机立即绑定

为什么纯虚函数初始化为0?

为什么纯虚函数初始化为0?

C++
慕侠2389804 2019-08-26 14:11:27
为什么纯虚函数初始化为0?我们总是声明一个纯虚函数:virtual void fun () = 0 ;即,它总是被赋值为0。我的理解是,这是将此函数的vtable条目初始化为NULL,此处的任何其他值都会导致编译时错误。这种理解是否正确?
查看完整描述

3 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

使用的原因=0是Bjarne Stroustrup不认为他可以获得另一个关键字,例如在实现该功能时通过C ++社区的“纯粹”。这在他的书“C ++的设计与演变”第13.2.3节中有所描述:

选择好奇的= 0语法...因为当时我看不到接受新关键字的机会。

他还明确指出,这不需要将vtable条目设置为NULL,并且这样做不是实现纯虚函数的最佳方法。


查看完整回答
反对 回复 2019-08-26
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

C ++标准的9.2节给出了类成员的语法。它包括这个产品:

pure-specifier:
    = 0

价值没有什么特别之处。“= 0”只是说“此函数是纯虚拟”的语法。它与初始化或空指针或数值零无关,尽管与这些事物的相似性可能具有助记符值。


查看完整回答
反对 回复 2019-08-26
  • 3 回答
  • 0 关注
  • 735 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信