C++温故而知新(二)
在初步了解到前面的关于类的第一个函数构造函数之后。关于构造函数的权限和使用方法,作用之后,在这里接下来研究C++的第二个特色
那就是虚函数,研究虚函数的作用、内存中分分配状态、继承、安全性等一系列的问题,我们将这些问题一个一个分解开来
1.虚函数作用
C++中加入虚函数,是由于多态泛型变成的考虑,函数的重载和虚函数是实现多态的主要途径,实现晚绑定机制,在编译的时候不知道会调用哪个
直到运行的时候才加载正确的地址
2.含有虚函数类的内存大小和位置
如果有虚表指针,那么地址应该和对象地址是一致的
如果有虚函数:内存大小=成员变量内存大小+padding大小+虚表个数*4字节(pS:如果从两个类继承,父类中都有虚函数,那么就有2个虚表指针,子类中的虚函数放在第一个表中)
想想前面的构造函数的功能,其中也包括创建虚表指针 VPTR VTBL
如果没有虚函数:内存大小=成员变量内存大小+padding大小
3.虚函数的安全性
谈到这个问题,父类的指针对象一般不能访问子类的没有覆盖的虚函数,但是通过虚表这种机制,又是赤裸裸的将子类的虚函数给拿到手了,这是由背与C++语法的
4.虚函数的缺点
暂用额外内存和运行时间
详细参考
我想做我自己
posted on 2013-10-14 10:27 AAAAAApple 阅读(171) 评论(0) 编辑 收藏 举报