内联函数 C++的进修系列之二

本文详细介绍了内联函数的概念、作用、写法,以及其优点和使用注意事项。重点讲述了内联函数如何通过消除函数调用开销来提升程序性能,并强调了在C++中正确使用内联函数的关键点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.什么是内联函数

        内联函数(Inline Functions)是一种在编程语言中的概念,它用于在编译时将函数的代码直接插入到函数调用的地方,而不是通过函数调用的方式进行执行。换句话说,编译器会将内联函数的代码复制到调用处,以消除函数调用的开销。

2.内联函数的作用

        内联函数主要用于优化程序的性能。函数调用通常需要一定的开销,包括保存和恢复现场、参数传递以及跳转等操作。对于一些短小的函数,这些开销可能会相对较大,因此使用内联函数可以避免这些额外的开销,提高程序的执行效率。

3.内联函数的写法

        在一般函数前面加上inline的关键字,在头文件里定义而非声明

4.内联函数的优点

  1. 以牺牲代码的空间换时间,提高了效率。
  2. 与c语言的宏的思想类似,但要优于宏,因为宏不能做类型检查,而内联函数作为一个函数可以进行类型检查。

5.示例代码

//这是myclass.h
class MyClass
{
public:
 void setA(int _a);//普通的成员函数,函数声明和定义分别定义在函数的内部和外部,不要求在同一个文件
 void setB(int _b)   //隐式的内联函数,函数的声明和定义都定义在函数的内部
   {
     b = _b;
    }
 inline void setC(int _c); //显式的内联函数,使用关键字inline
                            //函数声明在类的内部,函数定义在类的外部,但是函数声明和定义必须在同 
                            //一个文件
private:
    int a;
    int b;
    int c;
};
 
inline void MyClass::setC(int _c)    //显式的内联函数,函数定义跟函数声明必须再同一个文件
{
  c = _c;
}
 
 
//这是myClass.cpp
#include "myclass.h"
void MyClass::setA(int _a)            //普通的成员函数定义 
{
  a = _a;
}

6.使用内联函数的注意点

  1. 使用inline定义的内联函数必须将类的声明和内联成员函数的定义都放在同一个文件中,否则编译时无法进行代码的置换;
  2. 内联函数一般都是1-5行的小函数, 谨慎对待析构函数, 析构函数往往比其表面看起来要更长, 因为有隐含的成员和基类析构函数被调用;
  3. 不要在内联函数内使用循环语句和开关语句;
  4. 有些函数即使声明为内联的也不一定会被编译器内联, 比如虚函数和递归函数就不会被正常内联。
     

7.引用

一文搞懂内联函数 (baidu.com)

c++ 类的内联成员函数_levon的Qt_C++日记的博客-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值