我对C++中的虚函数这个概念还很陌生,像这样的线程很好地介绍了这个概念。好的,我被说服了。
但是为什么称虚函数为“虚拟”?我觉得这样的函数和普通函数/方法一样“具体”,不是吗?如果有人能解释一下使用“虚拟”这个词来命名这个概念的原因,那就太好了。
Virtuality(虚拟性),指具备某物的属性,但并未共享其(真实或想象中的)物理形态。
^ http://en.wikipedia.org/wiki/Virtual
C++ 的虚函数看起来像是一般的函数(“具备了属性”),但被调用的实现不是通过声明或内联实现来共享的。
p->SomeClass::aMethod()
,但即使在这种情况下,SomeClass
的 aMethod
声明也不能告诉你将调用哪个实现。有一个例外,即 C++11 中的 final
方法,它无法被覆盖,当 final
版本也是该方法的原始引入时。但那是病态的... - Cheers and hth. - Alf..SIMULA 67 Common Base Language(1970)..似乎是第一个引入面向对象关键字如“class”、“object”,以及正式概念“virtual”的语言。
;)
。 - rubenvboverride
是C++11中的一个新关键字,它是一个“在特定上下文中出现时具有特殊含义的标识符”。 - rubenvb