1.C++中的虚函数 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术, ...
分类:
编程语言 时间:
2017-05-16 17:59:01
阅读次数:
228
本文分析虚函数的小秘密,通过几个case说明为了支持虚函数,应该有什么样的约定,生成什么样的代码。 C++中虚函数用于实现多态:即方法调用和对象的动态类型绑定。详细地说对A*类型指针p指向A的公有派生类B的对象,A中有虚函数foo,B中给定foo的还有一份实现,p->foo应该和B中的新实现绑定,而 ...
分类:
其他好文 时间:
2017-05-15 10:47:09
阅读次数:
246
【问题描述】 音乐组同事反馈了一个必现Native Crash问题,tombstone如下: 崩溃的原因是pc指向了一个没有可执行权限的内存地址上。 【问题分析】 对应的代码如下: 其中,Functor类重载了()操作符: 因此,()操作其实就是调用了Functor类的一个虚函数,它的具体实现目前还 ...
分类:
其他好文 时间:
2017-05-14 00:59:20
阅读次数:
253
在设计父类子类继承关系中,经常会出现此类问题。 报错原因:父类中的虚函数只有声明,没有定义。 解决方案 : 1. 定义相关的虚函数的实现。 2. 不实现了,直接搞成纯虚函数留给后代实现。 virtual int getlength()const = 0; ...
分类:
其他好文 时间:
2017-05-13 23:23:07
阅读次数:
223
出现 Undefined symbols for architecture x86_64: 的原因 1.函数申明了,却未被定义。 2.申明的虚函数未被实现。 NOTE: a missing vtable usually means the first non-inline virtual membe ...
分类:
编程语言 时间:
2017-05-13 14:25:05
阅读次数:
373
使用QT来创建一个系统托盘,事实上是一件很简单的事。为什么这么说?一是因为QT文档给出了比较详细的例子,二是QT的结构比较优雅,设计风格统一。但是在动手之前,我们要从哪里下手?虽然QT文档给出了一个比较详细的例子,但由于功能较多,所以看起来比较费劲。我们在这只是抽丝剥茧,只实现系统托盘这一个功能。 ...
分类:
其他好文 时间:
2017-05-12 13:27:19
阅读次数:
217
一、多态的主要特点 1、继承体系下。继承:是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性 和行为,并能扩展新的能力,已有类被称为父类/基类,新增加的类被称作子类/派生类。 2、子类对父类的虚函数进行重写。 3、虚表。 在面向对象语言中,接口的多种不同现方式即 ...
分类:
编程语言 时间:
2017-05-12 09:40:49
阅读次数:
145
目录 静态类型VS动态类型,静态绑定VS动态绑定两组概念 虚函数动态绑定的机制 多态性 静态类型VS动态类型,静态绑定VS动态绑定两组概念 虚函数动态绑定的机制 多态性 一.静态 vs 动态 静态类型 VS 动态类型。静态类型指的是对象声明的类型,在编译器确定的。动态类型指的是对象的所指向的类型,动 ...
分类:
编程语言 时间:
2017-05-09 12:37:02
阅读次数:
256
一、自定义异常类 1、异常的类型可以是自定义的类类型 2、对于类类型的匹配依旧是之上而下的严格匹配 3、赋值兼容性原则在异常匹配中依然适用 所以要 (1)、匹配子类异常的catch放在上部 (2)、匹配父类异常的catch放在下部 4、异常类是数据结构所依赖的“基础设施”(现代c++库也必然包含充要 ...
分类:
其他好文 时间:
2017-05-08 18:39:01
阅读次数:
302
突然对C#充满了兴趣,于是兴致勃勃的折腾起来。 下面是折腾的过程: IDE,我选择了vs2017,不过这货的安装选项略多,对于新手来说各种坑。无论如何,选择”.NET桌面开发”即可,其他的全部留空。 然后新建项目,C#项目,控制台项目。 可以开搞了! 总的来说,C#和Java很像 -- 抽象、虚函数 ...