开发者社区> wu_being> 正文

[从C到C++] 1.8 C++ 内联函数(inline)

简介:
+关注继续查看

C++语言新增关键字 inline,用于将一个函数声明为内联函数。在程序编译时,编译器会将内联函数调用处用函数体替换,这一点类似于C语言中的宏扩展

采用内联函数可以有效避免函数调用的开销,程序执行效率更高。
使用内联函数的缺点就是,如果被声明为内联函数的函数体非常大,则编译器编译后程序的可执行码将会变得很大。另外,如果函数体内出现循环或者其它复杂的控制结构的时候,这个时候处理这些复杂控制结构所花费的时间远大于函数调用所花的时间,因此如果将这类函数声明为内联函数,意义不大,反而会使得编译后可执行代码边长。

通常在程序设计过程中,我们会将一些频繁被调用的短小函数声明为内联函数。

为了使得inline声明内联函数有效,我们必须将inline关键字与函数体放在一起才行,否则inline关键字是不能成功将函数声明内联函数的。如例1所示,inline关键字则无丝毫作用,而例2中则成功将swap函数声明为了一个内联函数。

[例1] inline 关键字放在函数声明处不会起作用


inline void swap(int &a, int &b);
void swap(int &a, int &b)
{
    int temp = a;
    a = b;
    b = temp;
}

[例2] inline 关键字应该与函数体放在一起:


void swap(int &a, int &b);
inline void swap(int &a, int &b)
{
    int temp = a;
    a = b;
    b = temp;
}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
C++内联函数:那时我还太年轻,并不知道使用inline带来的效率,早已在暗中标好了价格
C++内联函数:那时我还太年轻,并不知道使用inline带来的效率,早已在暗中标好了价格
36 0
【C++要笑着学】内联函数 inline | auto关键字(C++11) | 范围for | 关键字 nullptr(二)
本章将继续讲解C++入门部分的知识,将对内联函数、改版后的auto关键字、范围for,以及指针空值nullptr 等知识点进行讲解。
36 0
【C++要笑着学】内联函数 inline | auto关键字(C++11) | 范围for | 关键字 nullptr(一)
本章将继续讲解C++入门部分的知识,将对内联函数、改版后的auto关键字、范围for,以及指针空值nullptr 等知识点进行讲解。
36 0
C++程序设计——内联函数、auto、范围for循环、nullptr
C++程序设计——内联函数、auto、范围for循环、nullptr
45 0
C++——内联函数
介绍C++的内联函数问题
75 0
【C++】C++入门 --- 命名空间 | 输入输出 | 缺省函数 | 函数重载 | 引用 | 内联函数 | auto关键字 | 基于范围的for循环 | 指针空值
命名空间 | 输入输出 | 缺省函数 | 函数重载 | 引用 | 内联函数 | auto关键字 | 基于范围的for循环 | nullptr
60 0
内联函数和引用<C++入门>(跑路人笔记2)
内联函数和引用<C++入门>(跑路人笔记)
48 0
内联函数和引用<C++入门>(跑路人笔记1)
内联函数和引用<C++入门>(跑路人笔记)
42 0
+关注
wu_being
上海市 华东师范大学 软件工程 (非全日制硕士研究生) 网名:Wu_Being,吴兵 代码:!1
文章
问答
文章排行榜
最热
最新
相关电子书
更多
继承与功能组合
立即下载
对象的生命期管理
立即下载
移动与复制
立即下载