Why are virtual functions in C++ called 'virtual'?
所以我对C++中虚函数的概念很陌生,这样的线程很好地推销了这个概念。好吧,我深信不疑。
但是为什么虚拟函数被称为"virtual"?我的意思是这些功能是"具体的"和通常的函数/方法一样,不是吗?如果有人能解释这个词的选择"虚拟"来命名这个概念,那太好了。
- @H2CO3在任何意义上都不会过载。重载是指具有相同名称的函数接受不同的参数。
- @rubenvb正确——我会更新我的评论。
- @ H2CO3大!。我之所以提到它是因为一个有运行时开销,另一个没有;)。
- @所以我将复制我的评论作为答案:)
- @ H2CO3OH和EDCOX1〔1〕是C++ 11中的一个新的关键字---"在特定上下文出现时具有特殊意义的标识符"。
- @rubenvb可能是真的,但是对于一个可以被子类覆盖的函数,我应该用什么词呢?
Virtuality, the quality of having the attributes of something without sharing its (real or imagined) physical form
产生(http:///wiki/虚拟
C + +的似乎是不同的虚拟函数function("有"属性"),但这是要执行的是一个文件共享以出,或是经由在内置物的实现。
- 谢谢你的回答。你能解释一下你所说的"不通过声明分享"是什么意思吗?
- "未通过声明共享"表示未提供信息。声明没有提供有关函数的任何给定(虚拟)调用将调用哪个实现的信息。可以限定调用,使调用不是虚拟的,例如p->SomeClass::aMethod(),但即使在这种情况下,aMethod的SomeClass声明也不能告诉您将调用哪个实现。有一个例外,即一个C++ 11 EDCOX1×3的方法,当EDCOX1×3版本也是该方法的最初介绍时,它不能被重写。但那是巡逻…
- 关于不提供任何信息的声明也适用于非虚拟非内联成员函数,甚至大多数函数。C++中的虚拟函数具体指的是对对象的运行时类型进行调度。
- @布莱恩:你的第二句话是对的。因此,你的第一句话是错误的。
- 我认为你读到的比实际的单词更多。如果我声明一个在DLL中实现的C函数,那么声明不会告诉您关于实现的任何信息;它取决于加载的是哪个DLL。然而,这并不涉及虚拟功能。
- 布莱恩:DLL和像UNIX这样的其他动态库不是标准C++的一部分。如果"读到这个"的意思是"EDOCX1"〔5〕这个词,那么它就是共同的意思。所以我才引用了维基百科。
虚拟成员函数均值函数在执行想要的特异性取决于上的类型的对象,它是所谓的,在运行时。在编译器和运行时支持的语言策让这发生的。
关键词虚拟漫游在C + +是采取从模拟和Bjarne Stroustrup,这有。背景:我们在这里更多的纯粹的虚拟或抽象的名字有什么关系?
.. the SIMULA 67 Common Base Language (1970) .. seems to be the first language to introduce OO keywords as class, object, and also virtual as a formal concept.