对于C++中虚函数的原理的总结。包括对与C++中多态的内部原理总结。...
分类:
编程语言 时间:
2014-11-13 19:04:13
阅读次数:
333
1.纯虚函数的定义: (1)虚函数被“初始化”为0的函数。声明纯虚函数的一般形式是virtual 函数类型 函数名(参数表列) =0;(2)纯虚函数没有函数体;(3)最后面的“=0”并不表示函数返回值为0,它只起形式上的作用,告诉编译系统“这是纯虚函数”; (4)这是一个声明语句,最后必须加分号。(...
分类:
编程语言 时间:
2014-11-13 18:53:43
阅读次数:
170
1.在声明函数时,在最前加上virtual,则该函数就是函虚数,基类的虚函数被派生类继承后仍是虚函数。2.派生类中可以重写基类的虚函数。3.用指针访问重写的虚函数时,被访问的虚函数是指针指向的对象所属类的函数(只看指向的对象所属的类)。而用指针访问重写的普通函数时,被访问的函数是指针类型所属类的函数...
分类:
编程语言 时间:
2014-11-13 18:39:30
阅读次数:
187
重复继承下面我们再来看看,发生重复继承的情况。所谓重复继承,也就是某个基类被间接地重复继承了多次。下图是一个继承图,我们重载了父类的f()函数。其类继承的源代码如下所示。其中,每个类都有两个变量,一个是整形(4字节),一个是字符(1字节),而且还有自己的虚函数,自己overwrite父类的虚函数。如...
分类:
其他好文 时间:
2014-11-12 22:39:16
阅读次数:
335
前言07年12月,我写了一篇《C++虚函数表解析》的文章,引起了大家的兴趣。有很多朋友对我的文章留了言,有鼓励我的,有批评我的,还有很多问问题的。我在这里一并对大家的留言表示感谢。这也是我为什么再写一篇续言的原因。因为,在上一篇文章中,我用了的示例都是非常简单的,主要是为了说明一些机理上的问题,也是...
分类:
其他好文 时间:
2014-11-12 22:33:36
阅读次数:
220
内容概要:满足下面2个条件时,1. 父类有虚函数,子类也有虚函数,且子类的虚函数重写或覆盖了父类的虚函数2. 非虚继承类对象之内存布局在前面的例子中,恢复原来的两个虚函数vfBase_1()和vfBase_2(),同时在Derived类中重写基类的虚函数vfBase_1(),Base类和Derive...
分类:
其他好文 时间:
2014-11-12 08:11:59
阅读次数:
155
内容概要:满足下面2个条件时,1. 父类有虚函数,子类无虚函数(即无虚函数重写或无虚函数覆盖)2. 非虚继承类对象之内存布局前述相关内容参考:1.http://blog.csdn.net/pathuang68/archive/2009/04/20/4096088.aspx2.http://blog....
分类:
其他好文 时间:
2014-11-12 00:28:31
阅读次数:
256
内容概要:满足下面2个条件时,1. 父类无虚函数,子类有虚函数2. 非虚继承类对象之内存布局如果将Base中的两个虚函数删除,情况有会怎么样呢?将Base中的两个虚函数删除,其他保持不变。Base类和Derived类两者之间的关系如下:代码如下:#include using namespace st...
分类:
其他好文 时间:
2014-11-12 00:27:27
阅读次数:
189
内容概要:满足下面2个条件时,1. 父类有虚函数,子类也有虚函数,但子类并没有重写或覆盖父类的虚函数2. 非虚继承类对象之内存布局如果在Derived类中增加一个下面的虚函数,会怎么样呢?Base类和Derived类之间的关系如下:新加入的虚函数定义如下:#include using namespa...
分类:
其他好文 时间:
2014-11-12 00:22:26
阅读次数:
153
设计模式之代理模式Demo如下:定义一个虚基类,声明三个纯虚函数,我定义一个Person类Person.h定义一个Student类来继承这个Person类,并实现相应的虚函数Student.hStudent.cpp定义一个代理类Delegate,同时继承自Person类Delegate.cppmai...
分类:
其他好文 时间:
2014-11-11 22:33:48
阅读次数:
281