__declspec(novtable)关键字
来源:互联网 发布:数据库中的关系 编辑:程序博客网 时间:2024/04/29 05:19
__declspec (novtable )关键字,表示这个类不生成虚函数表,但是继承类不影响(不管基类是否使用了关键字)。
不使用此关键字,类在生成对象时构造函数和析构函数多要对这个虚函数表进行处理。
使用此关键字就相对省空间,少处理一些代码。
{
virtual void f(){}
virtual void g(){}
};class __declspec(novtable ) Base2
{
virtual void f(){}
virtual void g(){}
void k(){} //非虚函数
};class Derived : public Base1, public Base2
{
virtual void f(){}
virtual void h(){}
};Base1 base1;
Base2 base2;
如下调试:
base1 中有虚函数表,base2中无虚函数表.
Base2 *pB2= &base2;
base2.g(); //成功
pB2->g();// 指针通过虚函数表来访问,访问异常
pB2->k(); //成功调用非虚函数
Derived d;
第一个虚表地址:Derived::f() Base1::g() Derived::h()
第二个虚表地址:Derived::f() Base::g()
在继承类中,同名虚函数覆盖,并合并到第一张虚函数表中。基类使用或者不使用关键字【__declspec (novtable )】,继承类生成的虚表多是一样的。
写本文前阅读参考了以下文章:
http://blog.sina.com.cn/s/blog_5d2118510100ftzt.html
0 0
- __declspec(novtable)关键字
- 屌丝对微软关键字__declspec (novtable)的浅显理解
- __declspec(novtable) 的用法
- __declspec(novtable) 的用法
- VC:__declspec(novtable)
- __declspec(novtable) 的用法
- AFX_NOVTABLE与__declspec(novtable)
- AFX_NOVTABLE与__declspec(novtable)
- __declspec(novtable) 的用法
- __declspec(novtable) and RTTI
- AFX_NOVTABLE与__declspec(novtable)
- __declspec(novtable) 的用法
- __declspec(novtable)作用
- __declspec(novtable) 的用法
- AFX_NOVTABLE与__declspec(novtable)
- __declspec(novtable) 的用法 .
- __declspec(novtable)的作用
- __declspec(novtable)的用法(转)
- LinkedHashMap中根据value读取key值
- POJO概述
- 简易相册Demo
- 03 Helloworld
- 简易计算器Demo
- __declspec(novtable)关键字
- JS 参数传递都是值传递
- java重新学习
- 3-5 学生成绩统计
- Android--事件响应--触控屏幕(演示类库)
- 七种网卡绑定模式详解
- 黑马程序员——Java IO—字节流—ObjectInputStream和ObjectOutputStream
- cubietruck端口配置
- Box2d系列 – 如何在cocos2d-x中激活debug draw