猿问

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

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

我们总是声明一个纯虚函数:

virtual void fun () = 0 ;

即,它总是被赋值为0。

我的理解是,这是将此函数的vtable条目初始化为NULL,此处的任何其他值都会导致编译时错误。这种理解是否正确?


慕侠2389804
浏览 736回答 3
3回答

DIEA

使用的原因=0是Bjarne Stroustrup不认为他可以获得另一个关键字,例如在实现该功能时通过C ++社区的“纯粹”。这在他的书“C ++的设计与演变”第13.2.3节中有所描述:选择好奇的= 0语法...因为当时我看不到接受新关键字的机会。他还明确指出,这不需要将vtable条目设置为NULL,并且这样做不是实现纯虚函数的最佳方法。

德玛西亚99

C ++标准的9.2节给出了类成员的语法。它包括这个产品:pure-specifier:     = 0价值没有什么特别之处。“= 0”只是说“此函数是纯虚拟”的语法。它与初始化或空指针或数值零无关,尽管与这些事物的相似性可能具有助记符值。
随时随地看视频慕课网APP
我要回答