简介
纯虚函数使用通用语法声明:
virtual f() = 0;
然而,自 c++11 以来,有一种方法可以传达(特殊)成员函数的显式不存在
:
Mystruct() = delete; // eg default constructor
问
为什么不将此语法扩展到纯虚函数以实现通信此类操作的统一性? :
virtual f() = delete;
注意事项
我知道显而易见的答案是因为标准是这么说的!
。我想知道这背后的原因,以及是否有过这样的提议(或意图)。
最佳答案
粗略地说,区别在于:
virtual void f() = 0;
说“这个类是抽象的,我可能没有编写这个成员函数的实现”(尽管你被允许)。
但是,这:
void f() = delete;
说“这个成员函数字面上不存在,没有通过。”
关于c++ - 为什么我不能用 `= delete;` 声明一个纯虚函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24958270/