27得票6回答
C++中什么时候会创建虚函数表(vtable)?

编译器什么时候会创建虚函数表? 1) 当类至少包含一个虚函数。 或者 2) 当直接基类至少包含一个虚函数。 或者 3) 当任何级别的父类都至少包含一个虚函数。 与此相关的问题是:在C++继承体系中是否可能放弃动态分派? 例如,请考虑以下示例。#include <iostre...

27得票6回答
C++风格:在重写方法前加上virtual关键字

我和同事们在讨论是否应该在覆盖方法时添加virtual关键字,是在原始基类上添加还是都添加。 我倾向于给所有虚拟方法(即涉及vtable查找的方法)都加上virtual关键字。我的理由有三个: 1. 由于C++缺乏一个override关键字,virtual关键字的存在至少会通知你该方法涉及...

27得票7回答
为什么虚函数会是私有的?

我刚在一些代码中发现了这个:class Foo { [...] private: virtual void Bar() = 0; [...] } 这有什么用处吗? (我正在尝试将一些代码从VS移植到G ++,这引起了我的注意)

27得票4回答
为什么要使用基类指针来操作派生类

class base{ ..... virtual void function1(); virtual void function2(); }; class derived::public base{ int function1(); int func...

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

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

26得票2回答
重新定义和覆盖函数的区别

假设我有一个类A,其中有一个虚函数F():class A { virtual void F() { // Do something }; }; 我有另一个类B,它继承了A并重新定义F():class B : A { void F() { ...

26得票3回答
内联虚函数

在C++中,我的理解是虚函数可以被内联,但通常会忽略内联提示。似乎内联的虚函数并没有太大意义。 是这样吗? 有人能给出一个内联虚函数有用的案例吗?

25得票7回答
有没有不将成员函数设为虚函数的理由?

在C++中,有什么真正的理由不将成员函数设置为虚函数吗?当然,在大多数情况下,虚函数的开销相对较低,因此性能问题似乎并不会粘着在程序上。 另一方面,我曾经遇到过几次忘记将本应该是虚函数的函数设置为虚函数的情况。这似乎比性能问题更为重要。所以,默认情况下将成员函数设置为虚函数是否存在任何理由不...

24得票3回答
PHP中虚函数的正确实现方式?

在我所在的工作场所(仅使用PHP),我们有一个用于数据库抽象的基类。 当您想要将新的数据库表添加到基础层时,您必须创建此基类的一个子类并覆盖一些方法以定义使用此表的个性化行为。 正常的行为应该保持不变。 现在,我看到了很多新程序员在我们公司,他们只是覆盖默认行为的方法。 有些人非常“友好”,...

24得票2回答
虚继承:错误:没有唯一的最终覆盖函数

我知道虚拟继承在这里已经讨论过了,在提出这个问题之前,我已经仔细阅读了虚拟继承的细节,并研究了类似以下问题的细节: multiple-diamond-inheritance-compiles-without-virtual-but-doesnt-with 和 why does GCC g...