多态多态就是多种形态,C++的多态分为静态多态和动态多态。静态多态就是重载,因为是在编译期决议确定,所以称为静态多态。动态多态就是通过继承重写基类的虚函数实现的多态,因为是在运行时决议确定,所以称为动态多态。classBase{public:virtualvoidfunc1(){cout<<"Bas..
分类:
其他好文 时间:
2015-09-20 07:04:07
阅读次数:
196
纯虚函数在成员函数的形参后面写上=0,则成员函数为纯虚函数。包含纯虚函数的类叫做抽象类(也叫接口类),抽象类不能实例化出对象。纯虚函数只能声明不能定义。纯虚函数在派生类中重新定义以后,派生类才能实例化出对象。classPerson{voidDisplay()=0;//纯虚函数protected:str..
分类:
其他好文 时间:
2015-09-20 07:01:33
阅读次数:
189
1、函数的覆盖覆盖的条件:基类函数必须是虚函数(使用Virtual关键字进行声明);发生覆盖的两个函数必须分别位于派生类和基类中;函数名称与参数列表必须完全一样;2、函数的隐藏隐藏,是指派生类中具有与基类同名的函数(不考虑参数列表是否一样),从而派生类中隐藏了基类的同名函数。隐藏的两种情况:① 派生...
分类:
编程语言 时间:
2015-09-19 21:00:20
阅读次数:
148
面试题目中关于多态的问题不少,例如重载、虚函数(覆盖)、多态的概念等等,这里做一个梳理,包含如下内容:一、多态的定义(一)定义 能够呈现不同形态的特性或状态。(二)两种多态性 1.编译时的多态性:编译系统进行编译时在函数调用指令表中找到多个重载的函数中相对应的那个函数,将它们与主程序中调...
分类:
编程语言 时间:
2015-09-19 20:57:34
阅读次数:
157
1.多态的概念由虚函数实现的动态多态性就是:同一类族中不同类的对象,对同一函数调用作出不同的响应。先看下面这个简单的例子:#includeusing std::cout;using std::endl;class A{public: void print(){cout print(); ...
分类:
编程语言 时间:
2015-09-19 01:01:07
阅读次数:
220
1,从存储空间角度 虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,无法找到vtable,所以构造函数不能是虚函数。2,从使用角度 虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函数本身就是要初始化实例,那...
分类:
其他好文 时间:
2015-09-16 08:37:58
阅读次数:
440
1.动态特性静态特性和动态特性,编译时和运行时虚函数(1)虚函数的叫覆盖,虚函数不是实现多态的唯一手段(其他语言也可能采用别的方法)。抽象基类:
分类:
编程语言 时间:
2015-09-15 10:47:41
阅读次数:
142
在之前的一篇博文C++中的虚函数表是什么时期建立的?,我们知道虚函数表在编译期间就生成了,但是它被放置在可执行文件的什么地方呢? 为了解决这个问题,我们先来看下C++对象模型。 在C++对象模型中,nonstatic data members被配置于每一个class object中,stat...
分类:
其他好文 时间:
2015-09-15 01:26:13
阅读次数:
290
http://blog.csdn.net/xwpc702/article/details/8670025虚函数为了重载和多态的需要,在基类中是有定义的,即便定义是空,所以子类中可以重写也可以不写基类中的此函数!纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java中的接口函数!虚函数引入原...
分类:
其他好文 时间:
2015-09-14 22:38:07
阅读次数:
156