函数的解析之C/C++
来源:互联网 发布:网络渗透技术教程 编辑:程序博客网 时间:2024/06/05 11:09
函数是程序的执行模块,是整个项目的细胞,如何组织好每一个函数的结构,如何提高程序的可读性和运行效率,是程序员们不断品味的主体。有时函数的设计能直接体现出程序员对C/C++的理解和感悟。
C/C++的函数类型不对外乎以下几种,有些描述可能不太贴切:
一般函数,函数重载,虚函数,函数模板,内联函数,静态函数,回调函数,宏定义实现函数效果。
1. 函数重载:
编译时根据参数进行重载解析,执行和一般的函数一样。无附加效率开销,只是编译期间价格表之区分参数和返回而已。
2. 虚函数:
对于满足多态的有运行时开销,对于其它的,和普通成员函数一样。运行时多态,这时候会因为虚表的维护而变慢,这是面向对象编程相对于纯C主要的开销增加,首先要知道一点,虚函数只有对针和引用才能有效,对象不行。
3. 函数模板:
显示或者隐式实例化,非成员模板函数的和非成员函数一样,成员模板函数和成员函数一样。虚函数是运行时多态,你可以把模板理解为“编译期多态”,会根据你的调用实现多个函数体,增加体积开销,但效率高,因为就和普通函数一样了。
4. 内联函数:
代码可能在调用处展开,要求调用时看到的不只是声明,保证在所有的模块中地址一样。可以理解为宏的函数写法,用到的时候直接取代的,没有函数调用的开销,只有代码执行开销
5. 静态函数:
一般的只限制在该模块内可见,而类中的和普通函数一样。可认为该类对于他仅仅是个命名空间,没有其他的关系,关键是没有this指针,所以无法调用其他成员,效率上和普通函数一样
6. 回调函数:
__stdcall的函数指针。一般在C/C++里函数参数里的函数指针(多线程,qsort)就是回调函数,要将函数地址传给另一个函数,又另一个函数调用本函数,这是一种函数用法,不是函数类型,不过由于取值的关系,回调函数不能内联,要求静态或全局(成员函数理论上也可以,但是比较非主流),相对于内联和宏比较慢。
7. 宏定义函数:
宏就是“替代”,可以起到内联函数的作用。
对于一般函数会有一个跳转表:jmp XXXX。对于一般静态的函数,没有。对于release可能不会有这个跳转表。
- 函数的解析之C/C++
- 【C解析之五】函数:你不知道的事
- C语言学习之main函数解析
- C图形函数解析
- C 常用函数解析
- [C++]next_permutation()函数解析
- c的Main函数参数解析
- C语言的locale.h函数解析
- c中main()函数的解析
- strcpy函数的实现和解析(C/C++)
- C/C++——strcpy函数的实现和解析
- C/C++——strcpy函数的实现 和解析
- c++/c中函数默认参数的详细解析
- C语言之解析
- 【C解析之十三】对象的定义
- 【C解析之三】C语言的内存分配
- 【C解析之三】C语言的内存分配
- 【C解析之十二】C语言 printf 的秘密
- 如何在WINDOWS和Linux下配置环境变量
- 多进程--消息队列--聊天工具
- 代码
- Interesting Problem容斥原理
- 如何开启SQLSERVER数据库缓存依赖优化网站性能
- 函数的解析之C/C++
- get started
- ASE12.x与15.x中的字符串替换功能的实现
- 改变就从今日始
- DLL我的理解
- phpdesigner 7 注册码 注册机 汉化版
- 关于代码的传说(-)
- 开篇
- 我靠~UTF-8的BOM