__declspec(novtable) 的用法 .
2016-04-07 15:30
155 查看
__declspec(novtable) 在C++中接口中广泛应用. 不容易看到它是因为在很多地方它都被定义成为了宏. 比如说ATL活动模板库中的ATL_NO_VTABLE, 其实就是__declspec(novtable).
__declspec(novtable) 就是让类不要有虚函数表以及对虚函数表的初始化代码, 这样可以节省运行时间和空间. 但是这个类一定不允许生成实例, 因为没有虚函数表, 就无法对虚函数进行调用.
因此, __declspec(novtable)一般是应用于接口(其实就是包含纯虚函数的类), 因为接口包含的都是纯虚函数, 不可能生成实例. 我们把 __declspec(novtable)应用到接口类中, 这些接口类就不用包含虚函数表和初始化虚函数表的代码了. 它的派生类会自己包含自己的虚函数表和初始化代码.
__declspec(novtable) 就是让类不要有虚函数表以及对虚函数表的初始化代码, 这样可以节省运行时间和空间. 但是这个类一定不允许生成实例, 因为没有虚函数表, 就无法对虚函数进行调用.
因此, __declspec(novtable)一般是应用于接口(其实就是包含纯虚函数的类), 因为接口包含的都是纯虚函数, 不可能生成实例. 我们把 __declspec(novtable)应用到接口类中, 这些接口类就不用包含虚函数表和初始化虚函数表的代码了. 它的派生类会自己包含自己的虚函数表和初始化代码.
相关文章推荐
- Oracle创建表空间,用户*****
- 6.8.4 qmgr_job_cadidate函数: preemptive message scheduling策略
- Qt编程18:Qt调色板QPalette的使用
- SQL Server 触发器
- codeforces 610D D. Vika and Segments(离散化+线段树+扫描线算法)
- leetcode:查找
- MySql 优化
- 纠结很久的问题 在SSH下,Dao Service 下 baseService 为NULL的问题
- java解析ajax之json字符串
- adb工具(通用的调试工具、debug工具)&操作命令详解
- leetcode笔记:Counting Bits
- AndroidStudio 文档自动提示突然消失,怎么解决?
- 各大网站CSS代码初始化集合
- python 列表、元组、字典
- FILE 结构体及缓冲区
- WEB免费打印控件推荐
- C++实现——大数乘以小数
- 6.8.3 qmgr_job_entry_select函数:选择QMGR_JOB、QMGR_PEER、QMGR_ENTRY结构体
- SQL Server 事务、异常和游标
- WEB免费打印控件推荐