第十二章 多态与虚函数 一、多态的概念 向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为 具有不同功能的函数名可以用同一个函数名,以实现用一个函数名调用不同内容的函数 *静态多态和动态多态(编译时的多态性和运行时的多态性) 静态多态的特点:调用速率快、效率高,但缺少灵活性,在程序运行前 ...
分类:
其他好文 时间:
2017-06-13 18:19:59
阅读次数:
157
联编(Binding): 确定具有多态性的语句调用哪个函数的过程。 Static Binding (静态联编) : 在程序编译时确定调用哪个函数 例:函数重载 Dynamic Binding (动态联编) :在程序运行时,才能够确定调用哪个函数 用动态联编实现的多态,也称为运行时的多态 基类定义了虚 ...
分类:
其他好文 时间:
2017-06-09 23:35:08
阅读次数:
243
C++多态方式: (1)静态多态(重载,模板) 是在编译的时候,就确定调用函数的类型。 (2)动态多态(覆盖,虚函数实现) 在运行的时候,才确定调用的是哪个函数,动态绑定。运行基类指针指向派生类的对象,并调用派生类的函数。 虚函数实现原理:虚函数表和虚函数指针。 纯虚函数: virtual int ...
分类:
编程语言 时间:
2017-06-01 10:26:20
阅读次数:
318
继承主要目的是提高代码的复用性,但是只有在类与类之间有所属关系的时候才能继承,不能为了获取其他类的功能而继承,Java中只有单继承,不支持多继承,但可以多层继承 当父类中定义了相同的功能,内容不同时,子类对象不确定调用哪一个,容易带来安全隐患,所以不支持多继承。 一、方法的重写 1、当子类和父类有一 ...
分类:
其他好文 时间:
2017-05-17 22:17:34
阅读次数:
138
1.1. 可变参数 可变参数指在定义函数时,函数的参数的个数不确定,调用者可以传入不同个数的参数。 可变参数使用如下方式定义,可变参数只能是函数的最后一个参数。 类型 ... 参数名称 可变参数被编译为数组,因此在函数中可以当做数组使用。 可变参数可以当做数组使用,但是如果把最后一个参数定义为数组, ...
分类:
编程语言 时间:
2017-03-31 21:29:36
阅读次数:
186
多态:相同的行为,不同的实现(重写、重载) 多态: 1、静态多态:编译时,系统就能确定调用的是哪个方法 使用重载实现 2、动态多态:运行中系统才能动态确定方法所指的对象 使用动态绑定和重写实现 动态多态的技术基础: 引用数据类型转换的前提:不是任意引用数据类型都可以进行转换(没办法“指鹿为马”),只 ...
分类:
编程语言 时间:
2017-02-16 01:29:06
阅读次数:
185
1.显示转换:类型说明符(表达式),如a = int(z) 2.枚举类型enum:专门用来解决对数据的合法性检查问题,如一星期七天,如果用int/char等数据类型描述时,则需要对数据的合法性检查。声明形式为: enum 枚举类型名 {变量值列表} 注意:- 对枚举元素按常理处理,不能对其赋值 - ...
分类:
编程语言 时间:
2017-02-12 23:48:12
阅读次数:
267
有这样的场景 : 现在一个接口有很多种实现类,需要根据配置,来确定确定调用哪个具体的实现类。这样使得软件扩展性大大提高 在MEF可以通过ExportMetadata 来实现这样的效果。 1.现在我们建个接口: 2.新建一个meta类 3.有两个实现类 4.在程序中根据不同的配置来调用不同的实现类 ...
分类:
其他好文 时间:
2016-07-24 13:23:06
阅读次数:
103
1.静态联编和动态联编联编:将源代码中的函数调用解释为要执行函数代码。静态联编:编译时能确定唯一函数。在C中,每个函数名都能确定唯一的函数代码。在C++中,因为有函数重载,编译器须根据函数名,参数才能确定唯一的函数代码。动态联编:编译时不能确定调用的函数代码,运行时才能。C++中因为多态的存在,有时 ...
分类:
编程语言 时间:
2016-06-05 06:33:00
阅读次数:
380
转自http://blog.chinaunix.net/uid-20788636-id-1841334.html 1.线程创建和退出创建线程实际上就是确定调用该线程函数的入口点,这里通常使用的函数是pthread_create。在线程创建以后,就开始运行相关的线程函数,在该函数运行完之后,该线程也就 ...
分类:
编程语言 时间:
2016-05-27 16:49:45
阅读次数:
304