10得票2回答
何时会破坏二进制兼容性?

我曾认为,每当您进行以下操作之一时: 添加一个新的公共虚拟方法 virtual void aMethod(); 添加一个新的公共非虚拟方法 void aMethod(); 从接口实现一个公共纯虚拟方法 virtual void aMethod override; 实际上会破坏二进制兼容...

7得票4回答
为什么C++中虚函数表指针(vfptr)不能是静态的?

如果类的所有对象的虚函数表都是相同的,那么为什么指向该表的指针(vfptr)不能是静态的并且在所有对象之间共享呢?

9得票5回答
虚函数必须要有定义吗?

虚函数需要定义吗? 考虑下面的示例程序: #include <iostream> using namespace std; class base { public: void virtual virtualfunc(); }; class derived...

10得票3回答
不同基类中同名虚函数的重载是否可能?

标题可能有些令人困惑。 假设我们有以下设置;class A { public: virtual void fn() = 0; }; class B { public: virtual int fn() {}; }; class C: public A, public B ...

12得票3回答
覆盖C++虚方法

我有一个类模板,其中一些方法被定义为虚拟的,以便我的类的用户可以在派生类中提供它们的实现。请注意,在我的模板类中,有一些非虚拟方法使用了虚拟方法(在非虚拟类中调用了应该返回值的虚拟类)。 你能否给我一个简单的示例代码,其中父类的虚拟方法应该返回一个值(但其实现由子类提供),并且在该类的其他方...

27得票6回答
Swift是否具有动态调度和虚拟方法?

由于我的C++/Java/C#背景,我原本期望在Swift中看到虚方法,但是阅读Swift文档后发现没有提到虚方法。 我错过了什么? 由于浏览量众多,我决定为最新、最清晰/详细的答案提供奖励。

7得票4回答
从V表调用虚函数

作为C++中的所有虚函数都存储在V表中,因此覆盖发生在虚函数的情况下。 我想问是否有办法直接从表格调用虚函数,并能够确定V表包含哪些函数。

23得票5回答
过载决策和虚拟方法

考虑以下代码(有点长,但希望您能够理解):class A { } class B : A { } class C { public virtual void Foo(B b) { Console.WriteLine("base.Foo(B)"); }...

29得票6回答
C++带有虚方法的对象大小

我对使用虚函数时对象大小有一些疑问。 1)虚函数class A { public: int a; virtual void v(); } 类 A 的大小为 8 字节,其中包含一个整数 (4 字节) 和一个虚拟指针 (4 字节)。class B: p...

13得票1回答
如何在标准C++中使用计算goto语句将动态分派的速度提高20%

在你给代码加负分或开始说使用goto是邪恶且过时的之前,请阅读使用它的正当理由。在你将其标记为重复问题之前,请阅读完整的问题。 我正在研究虚拟机解释器,当我偶然发现了计算goto。显然,它们可以显著提高某些代码片段的性能。最为人所知的例子是主要VM解释器循环。 考虑这样一个(非常)简单的V...