问题标签 [virtual]
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.
c++ - 虚拟/纯虚拟解释
如果一个函数被定义为虚拟并且与纯虚拟相同,这到底意味着什么?
c# - Virtual 和 Override 在幕后做了什么
我刚开始了解 Virtual 和 Override 是用于(我找不到这么久的用途)。现在我在工厂模式中使用它们。所以我的问题是 Virtual 和 Override 在幕后做了什么?我愿意进入 IL 和机器代码的东西。
c# - 如何使用方法实现基类并强制派生类覆盖它?
有这样的东西:
我读了另一篇文章(虚拟类中的抽象方法),女巫很像我的问题,但有一点不同。我希望 AAA.ToString() 具有基本行为并强制派生类覆盖它。
我知道我可以做这样的事情(向下滚动),但我正在寻找合适的方法。
我也可以制作一个 IAAA 界面并构建我的 BBB 类,例如
但在我看来不对。
c++ - 这有多虚拟?
你能解释一下为什么:
打印“ Child::Method() ”,并且:
打印“ Parent::Method() ”?
课程:
谢谢,埃塔姆。
c++ - 虚拟数据类型/枚举
我想要一个像这样的虚拟课程:
这样每个派生的配置都可以有自己的一组 EPromptIds
这会失败,因为每个类都需要使用 Configuration::EPromptId 参数(而不是本代码中的 Configuration1::EPromptId 或 Configuration2::EPromptId)来实现虚函数。
是否可以让基类识别参数类型,但在每个派生类中定义不同的值(可能不使用枚举,但保持强类型,即不使用 int)。
编辑:我想要两个不同的“应用程序”有两种不同的配置。提示可以保存在数据库表中,但每个“应用程序”都有自己的表。指向基本配置类的指针包含在与某些硬件接口的类中(即实际显示的类)。硬件是一个 io 设备,可用于请求和接收用户输入。创建硬件类时,它将传递一个指向正确配置类的指针,因此在请求时显示正确的提示。
c++ - C++ 继承/VTable 问题
更新:将析构函数示例替换为直接方法调用示例。
你好,
如果我有以下代码:
- B中有VTable吗?B 没有虚函数,但从 b::func0() 调用 a::func0()
- func1 是否驻留在 VTable 中?它不是虚拟的。
- func2 是否驻留在 VTable 中?
- 如果 b::func0() 中没有 aa::func0() 调用,上述答案是否会有所不同?
谢谢
java - 我们可以在硬件中实现一个本地执行 Java 字节码的 Java 解释器吗?
如果我们在硬件中实现 java 解释器,那么我们如何实现 java 字节码的体系结构中立性...... java 是否使用 JIT(即时解释器)?以及这一切与操作系统的虚拟机概念和java虚拟机(JVM)有何关系
windows - 如何将来自两个游戏控制器的输入混合匹配到一个“虚拟”控制器中?
想象以下情况:
- 您使用的是 Windows XP(即使下面显示的对话框是 Vista 屏幕截图)。
- 您有两个物理 USB 游戏控制器,我们称它们为 A 和 B。
- 您有一个软件显然以传统方式访问操纵杆,只识别并允许使用一个操纵杆。
- 使用此软件时,您希望同时使用两个控制器,例如:
- 使用 A 的左摇杆和 B 的右摇杆
- 使用 A 中的 #1、#2 和 #6 按钮以及 B 中的 #2 和 #8 按钮
我想这个问题一定已经在某处的硬核游戏中出现了,并且有一种“虚拟游戏控制器驱动程序”或其他软件可用。理想情况下,这将在 Windows 中显示为游戏控制器,并允许使用物理连接控制器上可用的任何输入进行上述虚拟设置,以创建复合虚拟控制器。
如果是这种情况,我很想知道在哪里可以得到这个。如果没有,欢迎任何有关尝试实现这一目标的指示。我想我必须阅读 DirectInput 并清除我几乎不存在的 C++ 技能?
就像 Runeborg 回答的那样,现在看来,如果我想让这种情况发生,我可能不得不尝试编写自己的“虚拟游戏控制器设备驱动程序”。:-(
快速更新:在 smartgamer 上问过同样的问题,希望那里的另一群人可能会想出一个现有的答案。
c++ - Acceptable to use virtual inheritance to prevent accidentally creating a diamond?
This is a simplification of some real code, and a real mistake I made when I didn't realize someone else had already implemented Foo and derived from it.
EDIT: to save you from having to run this code...
- If run as-is, it prints "fail" (undesireable, hard to debug).
- If you delete the line marked "oops" it prints "Foo" (desired behavior).
- If you leave the "oops" and make the two inheritances virtual, it won't compile (but at least you know what to fix).
- If you delete the "oops" and make them virtual, it will compile and will print "Foo" (desired behavior).
With virtual inheritance, the outcomes are either good or compiler-error. Without virtual inheritance, the outcomes are either good or unexplained, hard-to-debug runtime failure.
When I implemented Bar, which basically duplicated what Foo was already doing, it caused the dynamic cast to fail, which meant bad things in the real code.
At first I was surprised there was no compiler error. Then I realized there was no virtual inheritance, which would have triggered the 'no unique final overrider' error in GCC. I purposefully chose not to use virtual inheritance since there aren't supposed to be any diamonds in this design.
But had I used virtual inheritance when deriving from Base, the code would have worked just as well (without my oops), and I would have been warned about the diamond at compile time vs. having to track down the bug at run time.
So the question is -- do you think it's acceptable to use virtual inheritance to prevent making a similar mistake in the future? There's no good technical reason (that I can see) for using virtual inheritance here, since there should never be a diamond in the design. It would only be there to enforce that design constraint.
c++ - 在 C++ 中,如果一个函数覆盖了一个虚函数,它会自动为虚函数吗?
我希望如果foo
在 class 中声明D
,但未标记为 virtual,则以下代码将调用foo
in的实现D
(无论 的动态类型如何d
)。
但是,在下面的程序中,情况并非如此。谁能解释一下?如果方法覆盖了虚函数,它会自动为虚函数吗?
上述程序的输出是: