60得票10回答
C#中虚函数的实际用途

在 C# 中,虚函数的实际用途是什么?

59得票4回答
C++头文件和函数声明以“= 0”结尾

我在 .h 文件中有以下代码,我不确定这个赋值语句是干什么的,以及如何正确地调用它?virtual void yield() = 0; 我以为函数默认返回值为0,但由于这个函数返回void,我有点困惑。有人可以对此发表评论,并可能说一下我该如何引用这个赋值语句,我的意思是在C++术语中它被称为...

55得票11回答
为什么不把所有函数都设为虚函数在C++中?

我知道虚函数在调用方法时有解引用的开销。但我认为随着现代架构速度的提高,这几乎可以忽略不计。 是否有任何特定原因导致C++中的所有函数不像Java一样都是虚函数? 根据我的了解,在基类中定义一个函数为虚函数就足够/必要了。现在当我编写父类时,可能不知道哪些方法会被覆盖。那么这是否意味着在编...

55得票7回答
纯虚函数带有函数体的使用情况是什么?

我最近得知,在C++中,纯虚函数可以选择性地拥有函数体。 这样的函数有哪些实际应用场景?

54得票3回答
g++ -fdump-class-hierarchy输出中的第一个(int (*)(...))0虚函数表条目是什么?

以下是原始代码:class B1{ public: virtual void f1() {} }; class D : public B1 { public: void f1() {} }; int main () { B1 *b1 = new B1(); ...

49得票11回答
替代的虚函数调用实现?

C++通过虚拟机制支持动态绑定。但据我所知,虚拟机制是编译器的实现细节,标准只规定了特定情况下应该发生的行为。大多数编译器都通过虚拟表和虚拟指针来实现虚拟机制。这不涉及虚拟指针和表的实现细节。我的问题是: 是否有任何编译器以除了虚拟指针和虚拟表机制之外的其他方式实现虚拟函数的动态调度?据我...

49得票16回答
在C++中使用接口会导致性能下降吗?

在C++中使用接口(抽象基类)是否会导致运行时性能降低?

49得票3回答
为什么在C++11中我们需要使用virtual ~A() = default;而不是virtual ~A() {}?

在 Stack Overflow 的帖子 Checking the object type in C++11 中,我有以下评论: 在 C++11 中,您实际上会想要执行 virtual ~A() = default;。否则,您将失去隐式移动构造函数。 virtual ~A() = de...

47得票2回答
避免 C# 虚拟调用的开销

我有一些经过大力优化的数学函数,完成时间为 1-2 纳秒。这些函数每秒被调用数亿次,因此即使已经有出色的性能,调用开销仍然是一个问题。 为了保持程序可维护性,提供这些方法的类继承了 IMathFunction 接口,以便其他对象可以直接存储特定的数学函数并在需要时使用它。public int...

45得票4回答
为什么要使用虚函数?

可能是重复问题: 有人能解释C++虚函数吗? 我有一个关于 C++ 虚函数的问题。 为什么以及何时使用虚函数?有人能给我一个虚函数的实时实现或用途吗?