【发布时间】:2012-03-05 23:38:55
【问题描述】:
我知道,为了声明一个纯虚函数,你需要使用“= 0;”语法,像这样:
class Foo
{
protected:
Foo();
virtual int getValue() = 0;
};
我的问题是,“= 0;”到底是什么(在编译器的内部工作中)语法做什么?它实际上是否将函数指针设置为零?它只是一种意图声明,就像 Java 和 C# 中的“抽象”保留字一样,如果是这样,为什么不在语言中添加一个保留字,例如“抽象”,而不是使用这种晦涩难懂的语法?
【问题讨论】:
-
此问题已回答here。
-
因为
pure关键字对于 C++ 程序员来说太易读了。 -
@nightcracker: Bjarne Stroustrup 对上下文关键字(即标识符在某些上下文中只是关键字而不是其他上下文)很谨慎,这是正确的,因为它使词法分析变得更加困难(即你不能说是否一个特定的标识符是一个关键字或不是没有它的上下文)。我不能为此责备它。然而,他也对引入完整的关键字持谨慎态度,这会产生所有那些奇怪的用法(
static!!!!)。 -
@MatthieuM。不过,C++11 确实有一些上下文关键字 :)
-
语法没有内在含义。仅仅因为两个句法结构看起来有些相似,并不暗示它们也有相似的语义。