C++特性之inline(详解)

1.介绍

        inline是C++的一个关键字,用于向编译器建议将函数或变量内联展开,减少函数调用的开销。

        内联展开是指将函数体直接插入到调用处,而不是通过常规的函数调用机制执行。

2.用法

        (1)内联函数

        在函数前加上inline关键字,可以将函数声明为内联函数:

inline int add(int a, int b) {
    return a + b;
}

        作用:

       (1)减少函数调用开销:内联函数将函数体直接插入调用处,避免了函数调用的压栈、跳转和返回等操作。

        (2)使用于小型函数:通常用于简单的、调用频繁的函数。

        示例:

#include <iostream>

inline int square(int x) {
    return x * x;
}

int main() {
    int result = square(5);  // 编译器可能会将 square(5) 替换为 5 * 5
    std::cout << "Result: " << result << std::endl;  // 输出 25
    return 0;
}

         (2)内联变量(C++17引入)

        C++17引入内联变量,运行在头文件中定义变量而不会导致重复定义错误。例如:

inline int globalVar = 42;  // 可以在头文件中定义

        作用:

        (1)解决头文件中变量定义问题:在C++17前,在头文件中定义变量需要在源文件中单独定义,否者会导致链接错误。

        (2)简化代码编写。

        示例:

// myheader.h
#ifndef MYHEADER_H
#define MYHEADER_H

inline int globalVar = 42;  // 在头文件中定义内联变量

#endif // MYHEADER_H

3.注意事项

        (1)编译器决定。inline只是对编译器的建议,编译器可以选择忽略。编译器会根据函数复杂度、调用频率等因素决定是否内联。

        (2)适用场景。适合小型、频繁调用的函数。不适合复杂函数或递归函数。

        (3)内联函数通常定义在头文件中,以便多个源文件展开。

        (4)内联变量主要用于头文件中定义全局变量。

4.内联函数的优缺点

优点:

        (1)减少函数调用开销,提高小型函数执行效率。

        (2)避免宏的缺陷:内联函数比宏更加安全,支持类型检测与调试。

缺点:

        (1)代码膨胀:如果内联函数体较大,会导致生成的二进制文件变大。

        (2)编译时间增加:内联展开会增加编译时间。

5.总结

        inline关键字用于建议编译器将函数或变量内联展开。内联函数适用于小型、频繁调用的函数,可以减少函数调用开销。 内联变量(C++17)允许在头文件中定义变量,避免重复定义错误。使用 inline 时需注意代码膨胀和编译时间增加的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值