C++中的虚方法是什么?

4

C++中的虚函数是什么意思?


3
我同意你的观点,因为这样一个基本的问题应该进行研究,而不是随意提问,特别是没有任何背景信息的情况下。 - BeemerGuy
1
可能是Can someone explain C++ Virtual Methods?的重复问题。 - Don Roby
1
在C++中,“方法”被称为“成员函数”。这可以帮助您搜索它们的定义。 - Dima
7
这个问题可能是一个重复的问题,但它肯定是一个真正的问题。那些将其标记为“不是一个真正的问题”的人应该感到羞耻。我认为初学者级别的问题比在这里得到高评价的问题更加重要,而这恰恰就是这样一个问题。称之为“不是一个真正的问题”是一种名字叫法。你基本上在宣称提问者很蠢。 - Omnifarious
3
这个问题可能应该被标记为“重复”,而不是“不是一个真正的问题”。很明显,这是一个真正的问题。毫无疑问,在这个网站上已经有人提出并且得到了满意的回答。 - Charles Salvia
显示剩余2条评论
3个回答

6
一种虚函数允许派生类替换基类提供的实现。编译器确保每当涉及到实际为派生类的对象时,即使通过基指针而不是派生指针访问该对象,替换始终被调用。这允许在派生类中替换基类中的算法,即使用户不知道派生类。
派生类可以完全替换(“覆盖”)基类成员函数,也可以部分替换(“增强”)基类成员函数。后者通过让派生类成员函数调用基类成员函数来实现,如果需要的话。
在此处了解更多信息:http://www.codersource.net/c/c-tutorials/c-virtual-function.aspx 然而,这很基础。下次在来这里问之前,请先尝试使用谷歌搜索!

1

虚函数的发明是为了让你不必切换类型。


0

它是一种在运行时而不是编译时查找的方法。这使得诸如多态性之类的东西可以工作。


1
vtables是一种实现细节。C++标准没有关于“vtables”的任何说明。 - fredoverflow
@FredOverflow:出于好奇,有哪些实现不使用虚函数表? - Ignacio Vazquez-Abrams
1
大多数实际实现似乎都使用vtable,至少据我所知。但是Fred提出了一个有效的观点-问题询问了C++中的虚方法是什么,其中C++是按其标准定义的语言。实现可能使用vtable这一事实很有趣,但它并不是直接回答所述问题的答案。 - Stuart Golodetz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接