193得票6回答
你能在Java中编写虚拟函数/方法吗?

在Java中是否可能编写虚拟方法,就像在C++中一样? 或者,是否有适当的Java方法可以实现类似的行为?请提供一些示例。

192得票13回答
内联虚函数真的毫无意义吗?

我在收到代码审查评论时遇到了这个问题,评论中说虚函数不需要是内连的。 我曾认为,在直接调用对象的函数中,内联虚函数可能会派上用场。但我想到了反驳的论点——为什么要定义虚函数,然后使用对象调用方法呢? 由于它们几乎永远不会被扩展,所以最好不要使用内联虚函数吗? 我用于分析的代码段:clas...

147得票15回答
虚函数与性能 - C++

在我的课程设计中,我广泛使用抽象类和虚函数。我认为虚函数会影响性能,但是我觉得这种性能差异不太明显,而且似乎我正在进行过早的优化。对吗?

138得票12回答
虚函数和虚表是如何实现的?

我们都知道在C++中什么是虚函数,但是它们在深层实现上是如何实现的? vtable能被修改或者在运行时直接访问吗? vtable是否存在于所有类中,还是只存在于至少有一个虚函数的类中? 抽象类是否仅在至少有一个条目的函数指针上具有NULL值? 是否拥有单个虚函数会减慢整个类的速度?或者...

131得票9回答
在C++类中使用虚方法的性能代价是什么?

在C++类中至少有一个虚方法(或其任何父类)意味着该类将拥有一个虚表,并且每个实例都将有一个虚指针。 因此,内存成本非常清晰。最重要的是实例上的内存成本(特别是如果实例很小,例如如果它们只是用于包含整数:在这种情况下,在每个实例中放置一个虚指针可能会使实例的大小翻倍。至于虚表所用的内存空间,...

128得票8回答
“纯虚函数调用”崩溃是从哪里来的?

我有时会在我的电脑上注意到崩溃并出现错误信息:“纯虚函数调用”。 当一个抽象类无法创建对象时,这些程序是如何编译的呢?

125得票3回答
为什么在派生类中调用一个非虚成员函数的影子函数,却没有调用基类的成员函数?

假设我们在Visual C++ 2010中有以下情景: #include <iostream> using namespace std; struct Base { void Display() { cout << "Base: Non-v...

122得票8回答
如何在Python中实现虚方法?

我了解PHP或Java中的虚方法。 在Python中如何实现虚方法? 还是说我需要在抽象类中定义一个空方法并重写它?

119得票6回答
为什么C#接口方法不声明为抽象或虚拟的?

在C#接口中声明的方法不使用 virtual 关键字,在派生类中覆盖该方法时也不使用 override 关键字。 这样做有什么原因吗?我认为这只是一种语言上的便利,显然CLR知道如何在内部处理此操作(默认情况下方法并不是虚拟的),但还有其他技术原因吗? 下面是派生类生成的IL:class Ex...

108得票12回答
什么情况下不应该使用虚析构函数?

在一个类中有没有声明虚析构函数有时候是有好处的,但是否需要特意避免编写虚析构函数呢?