virtual相关内容

为什么没有多边形没有指针/引用?

我在SO上找到了类似标题的一些问题,但是当我阅读答案时,他们集中在问题的不同部分,这是真正具体的(例如STL /容器)。 有人可以告诉我为什么你必须使用指针/引用来实现多态性?我可以理解指针可以帮助 - 但肯定引用只区分传递值和传递引用之间 当然,只要你分配内存在因此,你可以有动态绑定,然后这已经足够 - 显然不是。 解决方案 具有在编译时已知的固定类型和大小(如果它可以并且确 ..
发布时间:2016-10-11 21:46:42 C/C++开发

虚拟赋值运算符C ++

C ++中的赋值运算符可以是虚拟的。为什么需要它?我们可以让其他操作符也是虚拟的吗? 解决方案 赋值运算符不需要被虚拟。 下面的讨论是关于 operator = ,但它也适用于任何运算符重载的类型 下面的讨论表明,virtual关键字不知道关于找到匹配函数的参数的继承签名。在最后的例子中,它显示了如何在处理继承类型时正确处理赋值。 虚函数不知道参数的继承: 函数的签 ..
发布时间:2016-10-11 21:44:07 C/C++开发

CRTP避免动态多态性

如何在C ++中使用CRTP以避免虚拟成员函数的开销? 解决方案 有两种方法。 / p> 第一个是通过静态指定类型结构的接口: template struct base { void foo(){ static_cast(this) - > foo }; }; struct my_type:base ..
发布时间:2016-10-11 21:26:18 C/C++开发

备选虚拟机制实现?

C ++支持通过虚拟机制的动态绑定。但是据我所知,虚拟机制是编译器的实现细节,标准只是指定在特定情况下应该发生什么的行为。大多数编译器通过虚拟表和虚拟指针实现虚拟机制。是的,我知道这是如何工作的,所以我的问题不是关于虚拟指针和表的实现细节。我的问题是: 是否有任何编译器以虚拟指针和虚拟表机制以外的其他方式实现虚拟机制?就我所见过的大多数(读g ++,Microsoft visual stud ..
发布时间:2016-10-11 21:22:01 C/C++开发

C ++静态虚拟成员?

有可能在C ++中有一个成员函数 static 和 virtual ?显然,没有一个简单的方法来做它( static virtual member(); 是一个编译错误),但是至少有一种方法来实现相同的效果? IE: struct Object { struct TypeInformation; static virtual const TypeInformation& ..
发布时间:2016-10-11 21:12:51 C/C++开发

c ++虚拟继承

问题: class Base { public: Base(Base * pParent); / *实现基本的东西* / }; class A:virtual public Base { public: A(A * pParent):Base(pParent){} / * ... * / }; class B:virtual public Base { ..
发布时间:2016-10-11 20:26:04 C/C++开发

C ++虚拟/纯虚拟解释

如果一个函数被定义为virtual并且和纯虚拟一样的话,它是什么意思? 解决方案 维基百科的虚拟功能 ... 虚函数或虚方法是一个函数或方法,其行为可以通过具有相同签名的函数在继承类中重写。 而 纯虚函数或纯虚方法是一个虚函数,一个不抽象的派生类“ - 维基百科 因此,虚函数可以被覆盖,纯虚函数必须被实现。 / p> ..
发布时间:2016-10-11 19:58:12 C/C++开发

如何释放C#中的VM /私人桌面应用程序的字节

我在C#开发桌面应用程序。通过应用程序使用的VM大小是非常高的。我想添加水印到PDF文件,里面有更多的10,000页,10776页确切,应用程序冻结的虚拟内存大小inscreases有的时候还是会抛出内存溢出异常。 是否有发布/减少虚拟内存大小编程在C# 解决方案 Environment.FailFast :)解决方案 在所有的严重性,虽然,一个大型虚拟内存大小并不一定是内存问 ..
发布时间:2016-10-10 20:20:08 C#/.NET

C#调用子类覆盖方法,没有知识,它的一个子类的实例

我有一个虚方法的基类,和多个子类覆盖方法。 当我遇到的一个子类,我想打电话给重写的方法,但没有子类的知识。我能想到的丑陋的方式来做到这一点(检查值,并投它),但是看起来应该有一个以语言的方式来做到这一点。我想包含相同的列表中的多个子类的列表,否则很明显,我可以只让一个List 编辑:修正了在代码错了的意见,这导致我:) 有关实例非常合适的一个答案: 类Foo { 公共虚 ..
发布时间:2016-10-08 14:07:50 C#/.NET

字符转换到相应的虚拟键码

目前,我使用Win32 API中的方法 VkKeyScan 来一个字符的虚拟键代码转换。不过,这似乎有问题是,当我通过小字母,它而当我在一个英文大写字母来传递,它不与特殊字符,如返回相应的键码,同样工作正常“(”或“} “ 我该怎么办呢?反正对我来说,直接字符串转换为它的虚拟相当于不考虑其是否包含大写或特殊字符? 感谢 解决方案 您应该是更清楚你的要求是什么,更具体你认为什么是 ..
发布时间:2016-10-01 18:12:27 C#/.NET

如何不使用鼠标进行虚拟鼠标单击C#

我想在Windows应用程序进行点击,在不使用鼠标实(这样我就可以将其最小化)。就像一个机器人会表现。 我将如何做到这一点? 解决方案 下面的代码是从这里 一个转贴: 使用系统;使用System.Windows.Forms的 ;使用System.Runtime.InteropServices ; 公共Form1类:表格 { 函数[DllImport(“user32.d ..
发布时间:2016-09-28 15:22:46 C#/.NET

对C在C#虚拟呼叫速度++

我似乎记得读书的地方,在C#中的虚拟呼叫的成本不高,相对而言,在C ++。这是真的?如果是这样的 - 为什么 解决方案 C#虚拟呼叫必须检查“这个”被空和C ++虚拟呼叫没有? 。所以,我看不到一般为何C#虚拟呼叫会更快。在特殊情况下,C#编译器(或JIT编译器)的可能的能够内联虚拟呼叫优于C ++编译器,一个C#编译器获得更好的类型信息。调用方法指令的有时的是C ++慢一些,因为C#JI ..
发布时间:2016-09-26 20:50:30 C#/.NET

C#:虚拟函数调用的速度甚至比委托调用?

这恰好给我介绍一个代码设计问题。我说,我有一些调用函数,可以“改变”一“模板”的方法。一个直观的设计是按照“模板设计模式”。定义改变功能是在子类中重写“虚拟”功能。或者,我可以只使用代理功能,而“虚”。委托功能被注入,使得它们可以被太定制。 原来我以为第二个“委托”的方式会比“虚”的方式更快,但一些编码片断证明它是不正确的。 在下面的代码,第一DoSomething的方法遵循“模板模式 ..
发布时间:2016-09-23 22:11:45 C#/.NET

困惑"越权QUOT;与"新"在C#中

我有以下类: Base类 { 公共虚拟无效打印() { Console.WriteLine(“基地”); } } 类Der1:基本 { 公开新的虚拟无效打印() { Console.WriteLine (“Der1”); } } 类DER2:Der1 { 公共覆盖无效打印() { Console.WriteLine( “DER2”); } } ..
发布时间:2016-09-23 21:33:22 C#/.NET

对比:接口方法VS虚方法VS抽象方法

什么是每一种的优点和缺点是什么? 接口中的方法 虚拟方法 抽象方法 当一个人应该选择什么?什么是做这个决定时,应该记住的要点? 解决方案 虚拟和抽象的几乎是相同的。虚拟方法具有可选择覆盖基类的实现,而一个抽象的方法不和的必须的可以在子类中重写。否则,它们是相同的。它们之间的选择取决于具体情况。如果你有一个基本实现,您可以使用虚拟的。如果不这样做,你需要每一个后代来实现它为自 ..
发布时间:2016-09-22 19:52:47 C#/.NET

在部分类中重写一个虚方法

我目前与 nopCommerce 源代码工作,并尽我所能来避免编辑源在所有的,而是使用部分类和从源代码单独的插件,我们应该永远需要升级的版本。 我要做出一些改变的代码这下订单,在同一装配使用部分类: 一部开拓创新的源代码: 命名空间Nop.Services.Orders { 公共部分类OrderProcessingService:IOrderProcessingService ..
发布时间:2016-09-20 22:17:35 C#/.NET

源自而不是基地称为虚拟方法

有人能向我解释为什么当我投类进入基地之一被称为重载方法: 类基地 { 公共虚拟无效VirtualMethod() { Console.WriteLine(“基本虚方法”); } } 密封类派生:基本 { 公共覆盖无效VirtualMethod() { Console.WriteLine (“覆盖方法”); } } 静态无效的主要(字串[] args) { 派 ..
发布时间:2016-09-20 22:07:30 C#/.NET