为什么我不能用 `= delete;` 声明纯虚函数?

2024-05-20

Intro

纯虚函数使用通用语法声明:

virtual f() = 0; 

然而,自 c++11 以来,有一种方法可以显式地传达non existence(特殊)成员函数的:

Mystruct() = delete; // eg default constructor

Q

为什么不将此语法扩展到纯虚函数以实现此类操作通信的一致性? :

virtual f() = delete; 

Note

我知道显而易见的答案是because the Standard says so!。我想知道这背后的原因以及是否曾经有过这样的提议(或意图)。


粗略地说,区别在于:

virtual void f() = 0; 

说“这门课是abstract,而且我可能还没有编写这个成员函数的实现”(尽管你可以这样做)。

然而,这个:

void f() = delete;

说“这个成员函数实际上不存在,并且没有人会通过."

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我不能用 `= delete;` 声明纯虚函数? 的相关文章

随机推荐