virtual

QT程序设计:扩展Qt控件方法

匿名 (未验证) 提交于 2019-12-03 00:19:01
扩展Qt控件: Qt自带控件,一般无法满足一些自定义的操作。例如QGraphicsView,原生的无法响应鼠标滚轮事件实线缩放,同样也无法通过鼠标右键拖拽。相应的可以通过鼠标滚轮响应滚动条滚动。此处可以通过扩展原生的QGraphicsView控件实现上述功能,并屏蔽掉鼠标滚轮操作滚动条滚动。类似的控件还有,QListView,实现点击元素,可以发出信号响应对应的槽。 扩展方法: 步骤一:需要编写自己的控件类继承自Qt原生的控件类,例如: class MyGraphicsView : public QGraphicsView { Q_OBJECT public : explicit MyGraphicsView ( QWidget * parent = 0 ); virtual ~ MyGraphicsView (); public : protected : virtual void mousePressEvent ( QMouseEvent * event ); virtual void mouseMoveEvent ( QMouseEvent * event ); virtual void mouseReleaseEvent ( QMouseEvent * event ); virtual void wheelEvent ( QWheelEvent * event ); }

C++构造函数和析构函数调用虚函数时都不会使用动态联编

匿名 (未验证) 提交于 2019-12-03 00:06:01
可以,虚函数底层实现原理(但是最好不要在构造和析构函数中调用) 可以,但是没有动态绑定的效果,父类构造函数中调用的仍然是父类版本的函数,子类中调用的仍然是子类版本的函数。 effictive c++第九条,绝不在构造和析构过程中调用virtual,因为构造函数中的base的虚函数不会下降到derived上。而是直接调用base类的虚函数。绝不在构造和析构函数中调用virtual函数: a) 如果有继承,构造函数会先调用父类构造函数,而如果构造函数中有虚函数,此时子类还没有构造,所以此时的对象还是父类的,不会触发多态。更容易记的是基类构造期间,virtual函数不是virtual函数。 b) 析构函数也是一样,子类先进行析构,这时,如果有virtual函数的话,子类的内容已经被析构了,C++会视其父类,执行父类的virtual函数。 c) 总之,在构造和析构函数中,不要用虚函数。如果必须用,那么分离出一个Init函数和一个close函数,实现相关功能即可。 原文链接:https://blog.csdn.net/chen134225/article/details/81564972 第一个理由是概念上的。 在概念上,构造函数的工作是生成一个对象。在任何构造函数中,可能只是部分形成对象――我们只能知道基类已被初始化,但并不能知道哪个类是从这个基类继承来的。然而,虚函数在继承层次上是“向前

abstract和virtual

匿名 (未验证) 提交于 2019-12-02 23:48:02
1、abstract ・ 抽象方法就是没有实现的,必须是形如: ・ ・ 抽象类不能被实例化,只能被继承。 ・ 抽象类的子类必须实现每个抽象方法。 ・ 抽象类里面除了可以有抽象方法以外,也可以有普通的方法。 ・ 抽象类的构造函数可以省略,编译器会自动加上,但是不能是一个抽象方法,而只能是一个普通的构造函数。 1 class Program 2 { 3 static void Main(string[] args) 4 { 5 Employee employee = new Employee(); 6 Console.WriteLine(employee.ID); 7 Console.ReadKey(); 8 } 9 } 10 11 public abstract class Base 12 { 13 private Guid _id; 14 15 public Base() 16 { 17 this._id = Guid.NewGuid(); 18 } 19 20 public Guid ID 21 { 22 get { return this._id; } 23 } 24 } 25 26 public class Employee : Base 27 { 28 29 } 小结:简单概括一下,抽象类不可以直接实例化,他可以有n个(n>=0)抽象方法,这些抽象方法子类必须实现。

visual studio cl -d1reportSingleClassLayout查看内存f分布

匿名 (未验证) 提交于 2019-12-02 23:43:01
C:\Users\Administrator\Desktop\cppsrc>cl -d1reportSingleClassLayoutTeacher virtual.cpp 用于 x86 的 Microsoft (R) C/C++ 优化编译器 18.00.21005.1 版版权所有(C) Microsoft Corporation。 保留所有权利。 virtual.cpp C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\xlocale(337) : warning C4530: 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc class Teacher size(16): +--- | +--- (base class People) 0 | | {vfptr} 4 | | m_name 8 | | m_age | +--- 12 | m_salary +--- Teacher::$vftable@: | &Teacher_meta | 0 0 | &Teacher::display Teacher::display this adjustor: 0 Microsoft (R) Incremental Linker Version 12.00.21005.1 Copyright (C)

BitBake 命令

匿名 (未验证) 提交于 2019-12-02 23:43:01
3.3 使用举例 单独编译 kernel、模块、设备树   MYS-6ULX-IOT 开发板对应的 kernel 是 linux-mys6ulx: $ bitbake -c menuconfig -f -v linux-mys6ulx $ bitbake -c compile -f -v linux-mys6ulx $ bitbake -c compile_kernelmodules -f -v linux-mys6ulx $ bitbake -c deploy -f -v linux-mys6ulx   也有一些资料用 virtual/kernel 来指定 kernel,命令变成这样了: $ bitbake -c menuconfig virtual/kernel $ bitbake -c compile -f -v virtual/kernel $ bitbake -c compile_kernelmodules -f -v virtual/kernel $ bitbake -c deploy -f -v virtual/kernel    通过 sources/meta-myir-imx6ulx/conf/machine/include/mys6ulx-base.inc 和 sources/meta-myir-imx6ulx/conf/distro/include/myir

虚拟DOM和真实DOM的关系

匿名 (未验证) 提交于 2019-12-02 23:42:01
版权声明:如果您对这个文章有任何异议,那么请在文章评论处写上你的评论。 如果您觉得这个文章有意思,那么请分享并转发,或者也可以关注一下表示您对我们文章的认可与鼓励。 愿大家都能在编程这条路,越走越远。 https://blog.csdn.net/weixin_44369568/article/details/91488994 虚拟DOM和真实DOM的关系 首先,Virtual DOM并没有完全实现DOM,即虚拟DOM和真正地DOM是不一样的,Virtual DOM最主要的还是保留了Element之间的层次关系和一些基本属性。因为真实DOM实在是太复杂,一个空的Element都复杂得能让你崩溃,并且几乎所有内容我根本不关心好吗。所以Virtual DOM里每一个Element实际上只有几个属性,即最重要的,最为有用的,并且没有那么多乱七八糟的引用,比如一些注册的属性和函数啊,这些都是默认的,创建虚拟DOM进行diff的过程中大家都一致,是不需要进行比对的。所以哪怕是直接把Virtual DOM删了,根据新传进来的数据重新创建一个新的Virtual DOM出来都非常非常非常快。(每一个component的render函数就是在做这个事情,给新的virtual dom提供input)。 所以,引入了Virtual DOM之后,React是这么干的: 你给我一个数据

C++8种常见类类型

匿名 (未验证) 提交于 2019-12-02 23:40:02
版权声明:转载请注明出处,十分感谢! https://blog.csdn.net/qq_30683329/article/details/91473331 C++8种常见类类型 前言 大部分面向对象开发工作中都应用了以下部分或者全部的基本类别的类: 1、具体类(concrete class) 2、抽象类(abstract class) 3、接口类(interface class) 4、节点类(node class) 5、支持类(support class) 6、域类(domain class) 7、应用类(utility class) 8、集合和容器类(collection and container class) 这些类并不是特定的语言结构,而是用于实现逻辑类的技术。 类类型 描述 具体类 独立类;表示一个祖先-后代世系终止的结束类 抽象类 为所有的子类提供布局和蓝图的基准类,不能声明此类的对象;必须派生新的类,对抽象的基本中声明任何虚函数提供定义 接口类 用于修改或者增强另外一个类得接口,为了非面向对象代码和数据,提供面向对象性,而用来封装独立函数 节点类 提供了继承和多态的基础;不包含纯虚函数 域类 创建类在指定域内部模拟部分现实或者实体 支持 /应用类 不管在任何域内,对于不同的应用都非常有用 集合和容器类 其他对象组的一般性容纳器 具体类 具体类是作为结束类而设计和实现的

c++ virtual总结

匿名 (未验证) 提交于 2019-12-02 22:56:40
分享一下我老师大神的人工智能教程!零基础,通俗易懂! http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴! c++是一门面向对象的语言,但是它和c#,java不同,它没有反射机制。没有反射机制使得c++在语言的一些设计方面与其他语言有点不一样,主要体现在智能化方面,许多东西得程序员明确指定,例如本文要讲的virtual关键字。virtual是在运行时才体现的,而c++在运行时无法使用反射来确定当前类的父类是否有此方法,此方法是否被重载等信息,所以必须在写代码时用virtual来明确指明,然后通过编译器做一些特殊处理(也就是使用虚表)。 我们见到virtual最多的地方是在c++里面的多态实现。 [cpp] view plain copy print ? class public virtual void const class public public virtual void const class public public virtual void const [cpp] view plain copy print ? void const int 上面的例子来自于 http://www.vckbase.com/document/viewdoc/?id=948

Why does Windows reserve 1Gb (or 2 Gb) for its system address space?

冷暖自知 提交于 2019-12-02 22:32:51
It's a known fact that Windows applications usually have 2Gb of private address space on a 32bit system. This space can be extended to 3Gb with the /3Gb switch. The operating system reserves itself the remaining of the 4Gb. My question is WHY? Code running in kernel mode (i.e. device driver code) has its own address space. Why, on top of a exclusive 4Gb address space, the operating system still want to reserve 2Gb of each user-mode process? I thought the reason is the transition between user-mode and kernel-mode call. For example, a call to NtWriteFile will need an address for the kernel