virtual相关内容

Java VM是否跳过零乘法?

我想知道Java虚拟机是否避免了零乘。谢谢 推荐答案 根据Java Language Spec,“在执行操作本身的任何部分之前,运算符的每个操作数(条件运算符&;&;、||和?:除外)似乎都已完全求值。” 因此,即使编译器或运行时可以检测到一个因素为零,如果另一个因素可能有副作用,它仍然必须评估另一个因素。 ..
发布时间:2022-05-16 09:10:32 Java开发

如何设置虚拟GPIO环回

我目前正在开发一个程序,该程序应该使用.Net中的GPIO管脚。 我想在虚拟GPIO引脚上测试我的程序,但我不知道如何操作。 我想执行环回操作,其中一个虚拟GPIO 1将连接到另一个虚拟GPIO 2。 我已经对串口和tty0tty执行了类似的操作。 还有,我在Ubuntu上。 推荐答案 如果您没有可用的实际硬件,那么如果不破解一个真正的内核驱动程序,就没有这种可能性。 ..
发布时间:2022-05-16 09:00:23 C#/.NET

为什么C++支持带有实现的纯虚函数?

我今天做了一个简单的测试: struct C{virtual void f()=0;}; void C::f(){printf("weird ");} 程序还可以,但我觉得奇怪,我们用=0表示函数体应该在继承的类中定义,但似乎还是可以给它实现函数。 GCC和VC都试过了,都还行。所以在我看来,这应该是C++标准的一部分。 但为什么这不是语法错误? 我能想到的一个原因是, ..
发布时间:2022-05-15 23:45:11 C/C++开发

为什么我需要重新声明重载的虚函数?

我有一个带有两个重载函数 f(void) 和 f(int) 的基类.Derived 类通过调用 f(void) 实现 f(int).Derived2 仅实现 f(void). 编译器拒绝实现 Derived::f(int) 因为它想调用 f(int) 但我没有提供参数因为我想调用 f(void).为什么编译器会拒绝它?为什么添加行 virtual int f(void) = 0; 可以解决我 ..
发布时间:2022-01-24 16:50:53 C/C++开发

多态性和铸造

我想了解 c# 中的多态性,因此通过尝试几种构造,我想出了以下案例: 类形状{公共虚拟无效绘图(){Console.WriteLine("Shape.Draw()");}}类圆:形状{公共覆盖无效绘制(){Console.WriteLine("Circle.Draw()");}} 我知道,为了将 Draw() 消息发送到几个相关对象,以便它们可以根据自己的实现采取行动,我必须更改(在这种情况下 ..
发布时间:2022-01-24 16:44:49 C#/.NET

为什么是“虚拟"?在 C++ 中隐式传播的方法?

移除阻止方法虚拟性传播的能力的原因是什么? 让我更清楚一点:在 C++ 中,无论你在派生类中编写“virtual void foo()"还是“void foo()",只要在基类中声明 foo,它就会是虚拟的. 这意味着通过派生* 指针调用 foo() 将导致虚拟表查找(如果派生2 函数覆盖 foo),即使程序员不希望这种行为. 让我举一个例子(对我来说看起来很明显),说明阻止虚拟 ..
发布时间:2022-01-24 16:37:01 C/C++开发

C++成员函数虚覆盖和同时重载

如果我有这样的代码: 结构 A {虚空 f(int) {}虚空 f(void*) {}};结构 B:公共 A {无效 f(int) {}};结构 C:公共 B {无效 f(无效*) {}};int main() {C c;c.f(1);返回0;} 我收到一条错误消息,提示我正在尝试进行从 int 到 void* 的无效转换.为什么编译器不能确定他必须调用 B::f,因为这两个函数都被声明为虚拟 ..
发布时间:2022-01-24 16:18:31 C/C++开发

从基类调用虚函数

假设我们有: 类库{虚空 f(){g();};virtual void g(){//做一些Base相关的代码;}};派生类:公共基础{虚空 f(){Base::f();};virtual void g(){//做一些Derived相关代码};};主函数(){基 *pBase = 新派生;pBase->f();返回0;} 将从 Base::f() 调用哪个 g()?Base::g() 还是 De ..
发布时间:2022-01-24 16:17:49 C/C++开发

C++虚函数除了vtable怎么实现?

可能重复: 一个关于C++中虚拟机制的问题 在 C++ 中使用 vtable 是实现虚成员函数机制的唯一方法吗?还有哪些其他方式? 解决方案 另一个已知的机制是类型调度函数.实际上,您将 vtable 指针替换为 typeid(小枚举).(动态)链接器收集给定虚函数的所有覆盖,并将它们包装在 typeid 字段上的一个大 switch 语句中. 理论上的理由是,这用大量可预测 ..
发布时间:2022-01-24 16:13:20 C/C++开发

何时将 C++ 中的函数标记为虚拟函数?

由于方法静态绑定的 C++ 特性,这会影响多态调用. 来自维基百科: 虽然这种调度机制涉及的开销很低,但它对于该语言的某些应用领域可能仍然很重要旨在针对.出于这个原因,Bjarne StroustrupC++ 的设计者,选择使动态调度可选并且非默认.只有使用 virtual 关键字声明的函数才会基于对象的运行时类型调度;其他功能将根据对象的静态类型进行分派. 所以代码: 多边形 ..
发布时间:2022-01-24 16:09:01 C/C++开发

在虚拟继承的情况下类的大小

在涉及虚函数的虚拟继承的情况下,有人可以解释一下类的大小吗? 类 A{字符 k[3];上市:虚空 a(){};};B类:公共A{字符 j[3];上市:虚空 b(){};};C类:公共虚拟A{字符 i[ 3 ];上市:虚空 c(){};};D类:公共B,公共C{字符 h[3];上市:虚空 d(){};}; 类大小的输出是: sizeof(A): 8大小(B):12大小(C):16大小(D) ..
发布时间:2022-01-24 16:06:24 C/C++开发

为什么没有指针/引用就不能工作多态?

我确实在 SO 上发现了一些标题相似的问题——但是当我阅读答案时,他们关注的是问题的不同部分,这些部分非常具体(例如 STL/容器).. 有人可以告诉我为什么必须使用指针/引用来实现多态性吗?我可以理解指针可能会有所帮助-但肯定引用仅区分按值传递和按引用传递?? 当然,只要你在堆上分配内存——这样你就可以进行动态绑定,那么这就足够了——显然不是. 解决方案 在 C++ 中,对象 ..
发布时间:2022-01-24 15:45:58 C/C++开发

如何覆盖 <ENTER>Android中虚拟键盘的按键行为

我想覆盖虚拟键盘的 ENTER 键的行为,以便: 当屏幕上有更多字段时,它会“制表"到下一个字段 当它是屏幕的最后一个字段时,它执行屏幕的默认动作 我一直在使用 IME 选项和标签,但没有得到我想要的.有人有什么建议吗? 解决方案 在另一个论坛的帮助下,我找到了方法. 为了使其可重用,我创建了自己的超级对话框类,其中包含 2 个 OnKeyListener 对象和一个抽 ..
发布时间:2022-01-13 23:04:17 移动开发

蓝牙 HID 设备iOS 文本字段

我们正在使用充当键盘的 BT 设备与 iPad 通话.我们希望这个蓝牙设备与我们应用程序中的 1 个字段对话.(这是自己的看法)我们要显示虚拟键盘的所有其他 textFields/areaFields. 这可能吗?每当配对 BT 设备时,它都会禁用屏幕键盘. 我们曾考虑在显示需要从设备输入的 1 字段的视图之前关闭蓝牙,然后在移除视图时将其重新打开,但这有两个问题.iPad 不会自动连 ..
发布时间:2022-01-13 22:44:12 移动开发