virtual相关内容
我正在使用虚拟模式 (.NET 4.6) 的 ListView. 我试图在虚拟 ListView 中找到 Items 的索引:当我输入一个字母时,应该选择带有以该字母开头的文本的第一个项目. 这是listView1_KeyDown中的FindItemWithText: if (char.IsLetterOrDigit(e.KeyChar)){var str = e.KeyChar.ToS
..
我对 OOP 的一些概念感到很困惑:virtual、override、new 和 sealed override.任何人都可以解释这些差异吗? 我很清楚,如果要使用派生类方法,可以使用override关键字,这样派生类将覆盖基类方法.但我不确定 new 和 sealed override. 解决方案 virtual 关键字用于修改方法、属性、索引器或事件声明,并允许它在派生的班级.例
..
虚拟方法调用在 C++ 中是如何工作的? 解决方案 通过虚拟表. 阅读这篇文章,http://en.wikipedia.org/wiki/Virtual_table. 我可以在这里解释,但维基百科比我做得更好.
..
这是一道在线C++试题,已经做完了. #include使用命名空间标准;A级{};B级{国际我;};C级{无效的 foo();};D级{虚空 foo();};E级{内部我;虚空 foo();};F级{国际我;无效的 foo();};G级{无效的 foo();国际我;无效的 foo1();};H级{内部我;虚空 foo();虚空 foo1();};int main(){cout
..
在以下博客中:http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx 该博客包含以下代码示例: 公共课晚宴{公共 int DinnerID { 获取;放;}公共字符串标题{获取;放;}公共日期时间事件日期 { 获取;放;}公共字符串地址{获取;
..
为什么下面的示例打印“0",并且必须改变什么才能像我预期的那样打印“1"? #include 结构基{virtual const int value() const {返回0;}根据() {std::cout
..
我记得在 EF 导航属性应该是虚拟的: 公开课博客{公共 int BlogId { 获取;放;}公共字符串名称 { 获取;放;}公共字符串 Url { 获取;放;}公共字符串标签{获取;放;}公共虚拟 ICollection帖子{得到;放;}} 但我看看 EF Core并且不要将其视为虚拟的: 公开课学生{公共 int ID { 获取;放;}公共字符串姓氏 { 获取;放;}公共字
..
我试过这个代码: A 类{虚拟无效 foo() = 0;};B级{虚拟无效 foo() = 0;};C类:公共A,公共B{//虚空A::foo(){}//虚空B::foo(){}虚空 A::foo();虚空 B::foo();};void C::A::foo(){}void C::B::foo(){}int main(){Cc;返回0;} 使用注释部分是可以的,但是当我尝试在类声明之外编写定义
..
我确实在 SO 上发现了一些具有类似标题的问题 - 但是当我阅读答案时,他们专注于问题的不同部分,这些部分非常具体(例如 STL/容器). 谁能告诉我为什么必须使用指针/引用来实现多态?我可以理解指针可能会有所帮助-但肯定引用仅区分值传递和引用传递?? 当然,只要您在堆上分配内存 - 以便您可以进行动态绑定,那么这就足够了 - 显然不是. 解决方案 在 C++ 中,对象始终具有
..
我遇到了需要“模拟"麦克风输出的问题. 数据将通过网络传输,解码为 PCM,基本上需要写入麦克风 - 然后其他程序可以读取/记录/任何内容. 我一直在阅读有关 alsa 的信息,但信息很少.文件插件似乎很有希望 - 我正在考虑将命名管道作为“infile",然后我可以将数据从我的应用程序传送到它.但是,我无法让它工作(vlc/audacity 只是段错误). pcm.testing
..
我必须在运行时动态加载模块作为 dll,因为它们不是提前知道的,只是它们符合类接口.我注意到的是,在我捕获由 dll 抛出的异常(在主线程的主程序中)之后,调用正确的析构函数并销毁模块并卸载 dll,但随后作为 catch 块末尾的 }Visual Studio C++ 调试器在逐行执行时到达,我得到另一个异常,该异常使程序崩溃 xxxxx.exe 中 0x68ad2377 (msvcr90
..
F# 不支持protected 方法的定义.这里解释了为什么 F# 将 virtual 方法替换为在抽象类中定义的 abstract 方法(请参阅 此处). 我想知道是否有办法完全阻止从派生类外部访问 abstract 方法. 解决方案 和 Patryk Ćwiek 一样,我也不认为这是可能的,但这里有一个替代方案: 从设计模式我们知道我们应该偏爱组合而非继承.根据我的经验,
..
我有一个应该是抽象的类.在其中一个抽象方法中,返回类型可能是 class1、class2 或 class3 的实例,具体取决于实现该方法的类.我想知道我应该如何在抽象类中声明该方法.我考虑过使用动态类型,但我希望将返回类型限制为 3 个类之一,而不是每种类型,此外我不确定我是否可以覆盖它,以便在继承类中返回类型不会匹配抽象类中的返回类型. 如果你能帮助我,我会很高兴, Tnx! 解决
..
我在 MSVC++ 2008 中遇到了一个问题,其中 VS2008 抛出此编译错误: error C2509: 'render' : 成员函数未在 'PlayerSpriteKasua' 中声明 现在,让我感到困惑的是 render() 已定义,但在继承的类中. 类定义如下: SpriteBase -继承自->PlayerSpriteBase -继承人->PlayerSpriteKas
..
我有一个 c# 类,它有很多虚方法,其中一些方法本质上是抽象的(它们在子类中完全实现,基类是空的). 为了让它编译,我在基类中抛出一个 InvalidOperationException 并注释应该做什么.这只是感觉很脏. 有没有更好的方法来设计我的课程? 编辑:对于将在加拿大运行的应用程序的中间层,一半的方法是通用的,因此是虚拟的.一半的方法是针对特定省份的. 公共类Pers
..
是抽象函数xxx吗? 我刚刚做了一个测试,似乎表明私有方法也是虚拟的? class a {私有函数测试(){回声 1;}}b 类扩展了一个 {私有函数测试(){回声 2;}公共函数调用(){$this->test();}}$instance = 新 b;$instance->call(); 输出为2 解决方案 在 PHP 中,所有私有函数都不是虚拟的,因此无需显式声明它们为虚拟的
..
以下两个声明有什么区别? virtual void calculateBase() = 0;虚空calculateBase(); 我读到第一个 (=0) 是一个“纯抽象函数",但第二个是什么? 解决方案 第一个叫做纯虚函数.通常纯虚函数不会有任何实现,您不能创建包含纯虚函数的类的实例. 第二个是虚函数(即“普通"虚函数).一个类提供了这个函数的实现,但是它的派生类可以通过为这个方
..
我试图用子类中的虚拟方法覆盖抽象类中的抽象方法.我(假设到现在?)理解抽象方法和虚拟方法之间的区别. 显然我做不到,但我的问题是......为什么?基于接受的答案此处 和以下场景,我只是没有看到问题: 公共抽象类 TopLevelParent{受保护的抽象无效 TheAbstractMethod();}公共类 FirstLevelChild1 : TopLevelParent{prote
..
我可以执行存在于使用 Rhino Mocks 模拟的抽象类上的虚拟方法的主体吗? 明确地说,我不是要模拟虚方法的行为.我正在尝试/test/虚拟方法(在模拟类上). 这个想法是对 Rhino Mocks 的公然滥用吗? 解决方案 是的,应该没问题.我不能说我已经尝试过了,但如果它失败了,我会感到非常惊讶. 编辑:我怀疑您想要 PartialMock 方法.举个例子: 使
..
每种方法的优缺点是什么? 接口方法 虚拟方法 抽象方法 什么时候应该选择什么?做出这一决定时应牢记哪些要点? 解决方案 虚拟和抽象几乎相同.虚拟方法在基类中有一个可以选择性地被覆盖的实现,而抽象方法没有并且必须在子类中被覆盖.否则它们是相同的.在它们之间进行选择取决于情况.如果您有基本实现,则使用虚拟.如果您不这样做,并且您需要每个后代为自己实现它,您就选择抽象. 接
..