介绍
纯虚函数的声明通常采用以下语法:
virtual f() = 0;
然而,自从C++11以来,有一种方法可以明确地传达特定成员函数的不存在
:
Mystruct() = delete; // eg default constructor
问题
为什么不将这种语法扩展到纯虚函数,以实现在通信此类操作时的一致性呢?:
virtual f() = delete;
注意
我知道显而易见的答案是“因为标准这样规定!”。但我想知道背后的原因和是否曾经有类似的提议(或意图)。
virtual ~MyStruct() = delete;
已经被占用并且具有非常不同的功能。 - chris= delete
已经允许应用于非特殊成员函数(包括虚函数)和非成员函数,表示“调用此函数会在编译时发生错误”。 - Oktalistvirtual f() = 0
也没有任何理由。根据Bjarne Stroustrup的说法,他当时认为很难让新关键字被接受。 - Nasser Al-Shawwa