virtual相关内容

如何在不重载纯虚函数的情况下将抽象类转换为普通类?

看下面的代码: A 类{民众:虚拟 int getN() = 0;};B类:公共A{私人的:整数 n = 2;民众:int getN() { 返回 n;}};C类:公共A{//不包含属性 n,它不再需要 getN();}; A 类是抽象类.现在我有从 A 派生的 C 类.但它不像 B 类有一个属性 n.所以我不能重载getN(),然后类C是一个抽象类,我不能实例化它.那么如果我想实例化C类,我 ..
发布时间:2021-09-18 18:33:40 C/C++开发

当我的基类和派生类具有相同的功能时,它是否必须是虚拟的?

所以我有一个项目,我正在处理一个非常有层次的项目.在它的基类中,有一个函数 reset() 在所有派生类中都被调用.我很困惑的是,由于派生类中的这个重置基本上只是重置它的私有变量,然后调用它的前面(更高)类的 reset() 函数,重置函数是否必须是虚拟的? 例如 类基础{私人的:输入一些;民众:无效重置();};类派生:公共基础{私人的:int some1;民众:无效重置();};类 D ..
发布时间:2021-09-18 18:33:37 C/C++开发

缺少虚拟析构函数内存效果

根据标准,缺少虚拟析构函数的多态会导致未定义的行为.实际上,它确实会导致在删除父类时不会调用派生类的析构函数.但是,它是否也会导致任何常见编译器/系统中的内存泄漏?我对 Android/Linux 上的 g++ 特别感兴趣. 具体来说,我指的是删除派生类的内存是否会以某种方式泄漏.考虑: class Base {}派生类{整数 x;} 如果我删除一个 Base* 到一个 Derived, ..
发布时间:2021-09-18 18:33:34 移动开发

虚拟继承情况下的 vtable

在虚拟继承的情况下,vtable 有什么用(或者为什么需要 vtable)?在这种情况下,这个 vtable 指向什么. 示例: A 类{无效显示(){ }};B类:虚拟A{无效显示(){ }}; 在上面的例子中,B 类的大小是 8 个字节.这意味着 B 类的 vptr 指向一个 Vtable.这个 vtable 指向什么. 解决方案 vtable 是在 C++ 中实现 virt ..
发布时间:2021-09-18 18:33:28 C/C++开发

避免嵌入式目标上的虚函数

我有一个 class Player,它从由许多相等块组成的大内存块中播放数据. typedef char chunk_t[100];类型定义结构{chunk_t 数据[100]} blockOfMemory_t; 播放器本身理论上可以适用于不同的布局和数据内容,所以我想以可重用的方式对其进行编程.为此,我想到了这样的事情: class Player {民众:玩家() { ... }虚拟 ~P ..
发布时间:2021-09-18 18:33:19 C/C++开发

如果模板包含虚函数是否安全?

模板的早期绑定和虚函数的后期绑定.因此,如果模板包含虚函数是否安全? template类基{民众:数据;虚空 fn(T t){}}; 解决方案 它是完全安全的.一旦实例化了类模板,它就变成了普通类,就像其他类一样. template类基{民众:数据;虚空 fn(T t){}};派生类:base{民众:virtual void fn(int t){}//覆盖};基*pBase = 新派生() ..
发布时间:2021-09-18 18:33:13 C/C++开发

如何为应用程序数据增加虚拟内存页面文件的大小

随着时间的推移,我们的应用程序会分配越来越多的应用程序数据,有没有办法根据应用程序计算自动增加虚拟内存页面文件? 操作系统:Windows 32 位 谢谢 解决方案 这样做没有意义,因为您使用的是 x86 体系结构,并且每个应用程序有 2GB 的限制. http://msdn.microsoft.com/en-us/library/windows/desktop/aa36 ..
发布时间:2021-09-18 18:33:08 C/C++开发

调用虚函数时的奇怪行为

我不明白这段代码有什么问题.它看起来像一个不可思议的陷阱! 此代码: class Foo{民众:虚拟双 foo(double x) const = 0;double foo(int x) const { return (double)(x + x);}};班级酒吧:公共 Foo{民众:虚拟双 foo(double x) const { return x * x;}};int main(){ ..
发布时间:2021-09-18 18:32:59 C/C++开发

“虚拟"是什么意思?在“类 Foo:公共虚拟栏"中与“virtual void frob()"相反?

当“virtual"在“class Foo : public virtual Bar"而不是“virtual void frob()"中是什么意思? 对于给定的方法,有 8 种情况源于以下三个位置中虚拟的存在或不存在. 超类的函数. 这个类的继承链. 此类函数. 我想我了解数字 1 和数字 3 如何相互作用,但数字 2 似乎多余.是吗?我不明白什么? 解决方案 那是 ..
发布时间:2021-09-18 18:32:57 C/C++开发

您可以覆盖私有虚拟方法吗?

我认为你可以,我的同事认为你不能! 解决方案 你甚至不能声明私有虚拟方法.唯一有意义的时候是如果你有: 公共类外{私有虚拟 void Foo() {}公共类嵌套:外部{私有覆盖 void Foo() {}}} ...这是类型可以访问其父级私有成员的唯一情况.但是,这仍然是被禁止的: Test.cs(7,31):错误 CS0621:'Outer.Nested.Foo()': 虚拟或 ..
发布时间:2021-09-18 18:32:54 C#/.NET

c++:vtable 是否包含指向非虚函数的指针?

vtable 包含指向该类的虚函数的指针.它还包含指向非虚函数的指针吗? 谢谢! 解决方案 这是一个实现细节,但不是.如果实现将指向非虚函数的指针放入 vtable 中,则不能使用这些指针进行函数调用,因为这通常会导致调用不正确的非虚函数. 当调用非虚拟函数时,实现必须使用调用该函数的对象的静态类型来确定要调用的正确函数.存储在 vptr 访问的 vtable 中的函数将依赖于 ..
发布时间:2021-09-18 18:32:51 C/C++开发

如何计算页表大小?

给定:64 位虚拟字节地址,16 KB 页,32 位物理字节地址. 这台机器上页表的总大小是多少,假设有效位、保护位、脏位和使用位共 4 位,并且所有虚拟页都在使用中. 到目前为止,我知道页表条目的总数:2^64/2^14 = 2^50,但我无法理解如何找到每个条目的大小. 每个条目确实包含问题中所说的 4 位,但是可以从物理字节地址中找到条目的其余部分吗?这部分我很困惑. ..
发布时间:2021-09-18 18:32:47 其他开发

ubuntu 服务器的虚拟显示

我的问题是:有没有办法将虚拟显示器设置为 Linux 服务器上的默认显示器(这样,如果没有计数器指示,所有启动的 GUI 应用程序都将显示在该显示器上)? 我尝试使用这个:xvfb-run java -jar autoclick.jar,它产生以下输出: 搜索图形设备是无头的:假屏幕 N°1 宽:1600 高:900只需 1 个机器人点击:点击魔术按钮! 这是自动点击代码: Syste ..
发布时间:2021-09-18 18:32:44 其他开发

C++ 中的协变返回类型究竟是什么?

当我尝试执行此操作时出现编译错误: A 类{虚拟 std::vectortest() {/* 做某事 */};}B类:公共A{虚拟 std::vectortest() {/* 做某事 */};} 我假设 A 和 B 是协变类型,因此 A* 和 B* 也应该是(正确的?)通过推断,我本来希望 std::vector 和 std::vector 也应该是协变的,但情况似乎并非如此.为什么? ..
发布时间:2021-09-17 19:10:59 C/C++开发