virtual-method相关内容

'override'关键字只是检查重写的虚方法吗?

据我了解,在C ++ 11中引入覆盖关键字只不过是检查以确保正在实现的函数是覆盖基类中的虚拟函数。 是吗? 解决方案 这确实是个主意。关键是你明确你的意思,以便可以诊断出一个无声的错误: struct Base { virtual int foo()const; }; struct派生:Base { virtual int foo()//呐喊! { ..
发布时间:2018-08-03 14:21:59 C/C++开发

在PyGObject中覆盖虚拟方法

我试图执行高宽几何管理在GTK中为我的自定义Widget使用Python。我的小部件是来自 Gtk.DrawingArea 的子类,并绘制了图像的某些部分。 据我了解GTK文档(上面的链接)我必须实现以下4种方法: $ b $ ul GtkWidgetClass.get_preferred_width() GtkWidgetClass.get_preferred_height() G ..
发布时间:2018-05-30 17:20:38 Python

用多个签名覆盖C ++虚拟方法

我有一个C ++基类,它声明了一个具有两个不同签名的虚方法。 只要覆盖派生类中的某个虚方法签名,编译器(g ++ 4.6.3和g ++ 4.7)不再能够将该方法与同一派生类中的第二个签名进行匹配。 下面的示例代码不会编译如果我只将SPECIALIZE_ONEARG定义为1.为了重新编译它,我还必须将PASSTHRU_TWOARG定义为1.使用“PASSTHRU”方法并不理想,因为它的效 ..
发布时间:2018-04-18 20:33:05 C/C++开发

派生方法不在基类中调用

我不知道如何放一个正确的标题。抱歉我的问题对我很难。 我有一个类myCal.h: class myCal { public: myCal(); int add(int a,int b); int sub(int a,int b); int expresstion(int a,int b,int c); }; 和myCal.cpp: m ..
发布时间:2016-11-03 00:48:02 C/C++开发

访问者和模板化虚拟方法

在访问者模式的典型实现中,类必须考虑基类的所有变体(后代)。在许多情况下,访问者中相同的方法内容应用于不同的方法。在这种情况下,模板化的虚拟方法将是理想的,但是现在不允许这样做。 因此,可以使用模板方法来解析父类的虚方法吗? ): struct Visitor_Base; //转发声明。 struct Base { virtual accept_visitor(V ..

何时在构造函数中调用虚函数是安全的

我有一些代码,我真的想从一个构造函数调用一个虚方法。我知道这被认为是不安全的,我知道足够的对象构造也理解为什么。我也没有遇到这些问题。目前我的代码正在工作,我认为应该很好,但我想确定。 这里是我在做什么: 我有一些类层次结构,有一个普通的公共函数,只是转发到私有虚拟方法,像往常一样。但是我想在构建我的对象时调用这个公共方法,因为它正在将所有数据填充到对象中。我将绝对确定这个虚拟调用来自 ..
发布时间:2016-10-19 21:10:44 C/C++开发

Boost python包装了一个虚方法

我使用boost python来创建对c ++库的绑定。在这个库中的许多类有虚拟方法接受iterator / const_iterator类型作为参数。我不是特别想暴露这些类型,但宁愿创建一些包装器接受适当的容器的虚拟方法。我的问题是,在“默认实现”函数中执行这个包装是否安全? class Test { public: Test virtual〜Test(); virtua ..
发布时间:2016-10-19 19:49:22 C/C++开发

C ++样式:将虚拟关键字前缀到重写的方法

我一直在与我的同事讨论是否使用虚拟关键字或仅在原始基本类别前缀重写方法。 我倾向于以使用virtual关键字为所有虚拟方法(即涉及vtable查找的方法)添加前缀。我的理由有三个: 由于C ++缺少覆盖 关键字,虚拟 关键字至少通知你 该方法涉及查找和 理论上可以被 进一步专门化覆盖,或者可以是 通过指向更高的 基类。 始终使用这种风格 意味着,当你看到一个方法 ..
发布时间:2016-10-14 10:15:54 C/C++开发

Haskell中面向对象的编程

我试图理解面向对象的风格编程Haskell,知道事情会因为缺乏可变性有点不同。我已经玩过类型类,但是我对它们的理解仅限于它们作为接口。所以我编写了一个C ++示例,这是一个纯粹的基础和虚拟继承的标准钻石。 蝙蝠继承飞行和哺乳动物 $ c>飞行和哺乳动物继承 Animal 。 #include class Animal { public: virtual ..
发布时间:2016-10-13 09:59:24 C/C++开发

“override”关键字只是一个覆盖虚拟方法的检查?

根据我的理解,在C ++ 11中引入 override 关键字只是一个检查,以确保正在实现的功能是覆盖基本类中的虚拟函数。 是这样吗? 解决方案 这的确是这个想法。关键是你明确了你的意思,所以可以诊断一个否则无声的错误: struct Base { virtual int foo()const; }; struct Derived:Base { virt ..
发布时间:2016-10-11 21:55:55 C/C++开发

C#中的虚方法问题

有一个事情我不明白还有:当虚拟方法被调用,基本方法被调用以及 由于我在使用公共覆盖的WinForm的OnPaint方法,在它的身上base.OnPaint(五)被调用。我不明白,我以为虚拟方法覆盖原文件。 。如果它不是通常称为,为什么它在这种情况下,被称为?谢谢 解决方案 在虚方法被调用时, 基方法被称为呢? 没有。 由于当我使用公共覆盖 OnPaint()方法 ..
发布时间:2016-10-10 19:59:57 C#/.NET