问题标签 [virtual-functions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
6811 浏览

c++ - 在 C++ 中模拟类的虚拟静态成员?

反正在 C++ 中有一种虚拟静态成员吗​​?

例如:

我知道这个例子很简单,但是如果我有一个复杂数据的向量,对于所有派生类来说总是相同的,但需要从基类方法访问?

这个解决方案不能满足我,因为我需要在每个类中重新实现成员 _name 及其访问器 GetName()。就我而言,我有几个成员遵循 _name 行为和十分之一的派生类。

任何的想法?

0 投票
12 回答
62956 浏览

c++ - 虚函数和vtable是如何实现的?

我们都知道 C++ 中的虚函数是什么,但是它们是如何在深层次上实现的呢?

可以在运行时修改甚至直接访问 vtable 吗?

vtable 是否存在于所有类,还是只存在于至少具有一个虚函数的类?

抽象类是否只是为至少一个条目的函数指针设置了一个 NULL 值?

拥有一个虚函数会减慢整个班级的速度吗?还是只调用虚拟函数?如果虚拟功能实际上是否被覆盖,速度是否会受到影响,或者只要它是虚拟的就没有影响。

0 投票
8 回答
108546 浏览

c++ - “纯虚函数调用”崩溃从何而来?

我有时会注意到程序在我的计算机上崩溃并出现错误:“纯虚函数调用”。

当无法从抽象类创建对象时,这些程序如何编译?

0 投票
9 回答
1108 浏览

c++ - 如果有虚函数的类是用vtables实现的,那么没有虚函数的类是如何实现的呢?

特别是,无论如何都不需要某种函数指针吗?

0 投票
16 回答
15346 浏览

c++ - 在 C++ 中使用接口的性能损失?

在 C++ 中使用接口(抽象基类)时是否存在运行时性能损失?

0 投票
18 回答
197545 浏览

c# - 构造函数中的虚拟成员调用

我从 ReSharper 收到关于从我的对象构造函数调用虚拟成员的警告。

为什么这是不应该做的事情?

0 投票
3 回答
1071 浏览

c# - 将方法设为虚拟有什么危险?

我一直在用 RhinoMocks 进行一些模拟,它要求将模拟的方法设为虚拟。这很好,除非我们有一个自定义框架,其中包含我要模拟的方法,这些方法当前未标记为虚拟。

我无法预见将这些方法设为虚拟会有任何问题,但我想知道将方法设为虚拟有哪些潜在危险需要注意?

0 投票
7 回答
5237 浏览

c++ - 有什么理由不让成员函数成为虚拟的吗?

有什么真正的理由不在C++ 中将成员函数设为虚拟吗?当然,总是有性能争论,但在大多数情况下似乎并不成立,因为虚函数的开销相当低。

另一方面,我已经被咬过几次忘记将一个应该是虚拟的函数虚拟化。这似乎是一个比性能更大的论点。那么有什么理由不让成员函数默认为虚拟的吗?

0 投票
12 回答
31057 浏览

c++ - 什么时候不应该使用虚拟析构函数?

是否有充分的理由为类声明虚拟析构函数?你什么时候应该特别避免写一个?

0 投票
28 回答
632544 浏览

oop - 抽象方法和虚拟方法有什么区别?

抽象方法和虚拟方法有什么区别?在哪些情况下建议使用抽象或虚拟方法?哪一个是最好的方法?