博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
内联函数
阅读量:5227 次
发布时间:2019-06-14

本文共 926 字,大约阅读时间需要 3 分钟。

---恢复内容开始---

1、C的效率

  在C中,保持效率的一个方法是使用宏(macro)。宏的实现是用预处理器而不是编译器。预处理器直接用宏代码代替宏调用,所以就没有参数压栈、生成汇编语言的CALL、返回参数、执行汇编语言的RETURN等的开销。

2、C ++中宏存在的问题

  2.1 不是函数调用,隐藏了难以发现的错误。优先级等等问题

#define FLOOR(x,b) x>=b?0:1if(FLOOR(a&0x0F,0x07))  //……if(a&0x0F>=0x07?0:1)#define FLOOR(x,b) ((x)>=(b)?0:1)

  2.2 预处理器不允许访问类的成员数据。这就意味着预处理器宏不能用作类的成员函数。C++引入内联函数。

3、内联函数

     内联函数在适当的地方像宏一样展开。所以不需要函数的开销。

  3.1、类内部的内联函数

    通常必须在函数定义前面放一个inline关键字,但这在类内部定义内联函数时并不是必须的。任何在类内部定义的函数自动地成为内联函数。

#include
#include
using namespace std;class Point{int i, j, k;public:Point():i(0),j(0),k(0){}Point(int ii, int jj, int kk): i(ii), j(jj), k(kk){}void print(const string& msg = "") const {if(msg.size() != 0) cout<
<
<<"i = "<
<<", "<<"j = "<
<<", "<<"k = "<
<

两个构造函数和print 函数都默认为内联函数。

---恢复内容结束---

转载于:https://www.cnblogs.com/wiessharling/archive/2013/03/27/2985282.html

你可能感兴趣的文章
UIImage 和 iOS 图片压缩UIImage / UIImageVIew
查看>>
MongoDB的数据库、集合的基本操作
查看>>
ajax向后台传递数组
查看>>
疯狂JAVA16课之对象与内存控制
查看>>
[转载]树、森林和二叉树的转换
查看>>
WPF移动Window窗体(鼠标点击左键移动窗体自定义行为)
查看>>
软件测试-----Graph Coverage作业
查看>>
django ORM创建数据库方法
查看>>
创建Oracle synonym 详解
查看>>
php7 新特性整理
查看>>
RabbitMQ、Redis、Memcache、SQLAlchemy
查看>>
linux查看端口占用
查看>>
Sql常见面试题 受用了
查看>>
知识不是来炫耀的,而是来分享的-----现在的人们却…似乎开始变味了…
查看>>
CSS背景颜色、背景图片、平铺、定位、固定
查看>>
口胡:[HNOI2011]数学作业
查看>>
我的第一个python web开发框架(29)——定制ORM(五)
查看>>
中国剩余定理
查看>>
基础笔记一
查看>>
uva 10137 The trip
查看>>