virtual相关内容

virtual、override、new、sealed override的区别

我对 OOP 的一些概念感到很困惑:virtual、override、new 和 sealed override.任何人都可以解释这些差异吗? 我很清楚,如果要使用派生类方法,可以使用override关键字,这样派生类将覆盖基类方法.但我不确定 new 和 sealed override. 解决方案 virtual 关键字用于修改方法、属性、索引器或事件声明,并允许它在派生的班级.例 ..
发布时间:2021-12-12 08:21:45 C#/.NET

C++ 中带有 int 、函数、虚函数的 sizeof 类?

这是一道在线C++试题,已经做完了. #include使用命名空间标准;A级{};B级{国际我;};C级{无效的 foo();};D级{虚空 foo();};E级{内部我;虚空 foo();};F级{国际我;无效的 foo();};G级{无效的 foo();国际我;无效的 foo1();};H级{内部我;虚空 foo();虚空 foo1();};int main(){cout ..
发布时间:2021-12-09 21:35:34 C/C++开发

导航属性应该是虚拟的 - 在 ef core 中不需要?

我记得在 EF 导航属性应该是虚拟的: 公开课博客{公共 int BlogId { 获取;放;}公共字符串名称 { 获取;放;}公共字符串 Url { 获取;放;}公共字符串标签{获取;放;}公共虚拟 ICollection帖子{得到;放;}} 但我看看 EF Core并且不要将其视为虚拟的: 公开课学生{公共 int ID { 获取;放;}公共字符串姓氏 { 获取;放;}公共字 ..

为什么多态在没有指针/引用的情况下不起作用?

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

模拟麦克风(虚拟麦克风)

我遇到了需要“模拟"麦克风输出的问题. 数据将通过网络传输,解码为 PCM,基本上需要写入麦克风 - 然后其他程序可以读取/记录/任何内容. 我一直在阅读有关 alsa 的信息,但信息很少.文件插件似乎很有希望 - 我正在考虑将命名管道作为“infile",然后我可以将数据从我的应用程序传送到它.但是,我无法让它工作(vlc/audacity 只是段错误). pcm.testing ..
发布时间:2021-11-27 08:33:48 服务器开发

捕获dll异常后访问冲突

我必须在运行时动态加载模块作为 dll,因为它们不是提前知道的,只是它们符合类接口.我注意到的是,在我捕获由 dll 抛出的异常(在主线程的主程序中)之后,调用正确的析构函数并销毁模块并卸载 dll,但随后作为 catch 块末尾的 }Visual Studio C++ 调试器在逐行执行时到达,我得到另一个异常,该异常使程序崩溃 xxxxx.exe 中 0x68ad2377 (msvcr90 ..
发布时间:2021-11-26 20:12:19 C/C++开发

f#中受保护的虚拟方法

F# 不支持protected 方法的定义.这里解释了为什么 F# 将 virtual 方法替换为在抽象类中定义的 abstract 方法(请参阅 此处). 我想知道是否有办法完全阻止从派生类外部访问 abstract 方法. 解决方案 和 Patryk Ćwiek 一样,我也不认为这是可能的,但这里有一个替代方案: 从设计模式我们知道我们应该偏爱组合而非继承.根据我的经验, ..
发布时间:2021-11-26 16:41:50 其他开发

“虚拟"Objective-c 中方法的返回类型

我有一个应该是抽象的类.在其中一个抽象方法中,返回类型可能是 class1、class2 或 class3 的实例,具体取决于实现该方法的类.我想知道我应该如何在抽象类中声明该方法.我考虑过使用动态类型,但我希望将返回类型限制为 3 个类之一,而不是每种类型,此外我不确定我是否可以覆盖它,以便在继承类中返回类型不会匹配抽象类中的返回类型. 如果你能帮助我,我会很高兴, Tnx! 解决 ..
发布时间:2021-11-26 16:36:32 移动开发

C++ - “未声明成员函数"在派生类中

我在 MSVC++ 2008 中遇到了一个问题,其中 VS2008 抛出此编译错误: error C2509: 'render' : 成员函数未在 'PlayerSpriteKasua' 中声明 现在,让我感到困惑的是 render() 已定义,但在继承的类中. 类定义如下: SpriteBase -继承自->PlayerSpriteBase -继承人->PlayerSpriteKas ..
发布时间:2021-11-26 16:33:33 C/C++开发

虚类中的抽象方法

我有一个 c# 类,它有很多虚方法,其中一些方法本质上是抽象的(它们在子类中完全实现,基类是空的). 为了让它编译,我在基类中抛出一个 InvalidOperationException 并注释应该做什么.这只是感觉很脏. 有没有更好的方法来设计我的课程? 编辑:对于将在加拿大运行的应用程序的中间层,一半的方法是通用的,因此是虚拟的.一半的方法是针对特定省份的. 公共类Pers ..
发布时间:2021-11-26 16:31:42 C#/.NET

PHP 中 C++ 的虚函数的等价物是什么?

是抽象函数xxx吗? 我刚刚做了一个测试,似乎表明私有方法也是虚拟的? class a {私有函数测试(){回声 1;}}b 类扩展了一个 {私有函数测试(){回声 2;}公共函数调用(){$this->test();}}$instance = 新 b;$instance->call(); 输出为2 解决方案 在 PHP 中,所有私有函数都不是虚拟的,因此无需显式声明它们为虚拟的 ..
发布时间:2021-11-26 16:30:40 PHP

C++ 中的虚函数实例化有什么区别?

以下两个声明有什么区别? virtual void calculateBase() = 0;虚空calculateBase(); 我读到第一个 (=0) 是一个“纯抽象函数",但第二个是什么? 解决方案 第一个叫做纯虚函数.通常纯虚函数不会有任何实现,您不能创建包含纯虚函数的类的实例. 第二个是虚函数(即“普通"虚函数).一个类提供了这个函数的实现,但是它的派生类可以通过为这个方 ..
发布时间:2021-11-26 16:24:29 C/C++开发

用虚拟方法覆盖抽象方法

我试图用子类中的虚拟方法覆盖抽象类中的抽象方法.我(假设到现在?)理解抽象方法和虚拟方法之间的区别. 显然我做不到,但我的问题是......为什么?基于接受的答案此处 和以下场景,我只是没有看到问题: 公共抽象类 TopLevelParent{受保护的抽象无效 TheAbstractMethod();}公共类 FirstLevelChild1 : TopLevelParent{prote ..
发布时间:2021-11-26 16:23:13 C#/.NET

Rhino 模拟一个抽象类而不模拟它的虚方法?

我可以执行存在于使用 Rhino Mocks 模拟的抽象类上的虚拟方法的主体吗? 明确地说,我不是要模拟虚方法的行为.我正在尝试/test/虚拟方法(在模拟类上). 这个想法是对 Rhino Mocks 的公然滥用吗? 解决方案 是的,应该没问题.我不能说我已经尝试过了,但如果它失败了,我会感到非常惊讶. 编辑:我怀疑您想要 PartialMock 方法.举个例子: 使 ..
发布时间:2021-11-26 16:21:45 C#/.NET

比较:接口方法 vs 虚方法 vs 抽象方法

每种方法的优缺点是什么? 接口方法 虚拟方法 抽象方法 什么时候应该选择什么?做出这一决定时应牢记哪些要点? 解决方案 虚拟和抽象几乎相同.虚拟方法在基类中有一个可以选择性地被覆盖的实现,而抽象方法没有并且必须在子类中被覆盖.否则它们是相同的.在它们之间进行选择取决于情况.如果您有基本实现,则使用虚拟.如果您不这样做,并且您需要每个后代为自己实现它,您就选择抽象. 接 ..
发布时间:2021-11-26 16:18:41 C#/.NET