C++:内联函数

本文主要介绍了C++内联函数。首先指出函数宏存在需加括号、结果不符预期、不重视作用域等缺陷。接着说明了内联函数的声明与定义方式及注意事项,还阐述了内联函数与编译器的关系,如inline只是建议,部分情况编译器不做内联处理。最后总结编写代码时无需特意加inline。

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

C++:内联函数

 

一、函数宏的缺陷

1、为保证运算完整性,须加括号。

#define MAX(x, y) ((x)>(y) ? (x) : (y))

2、即使加了括号,有些情况也与预期结果不符。

#include <iostream>
using namespace std;

#define MAX(x, y) ((x)>(y) ? (x) : (y))

int main()
{
    int i = 10;
    int j = 20;
    int a = MAX(i, ++j); // a = (i) > (++j) ? (i) : (++j); 预期结果为21,实际为22.
    cout<<"a = "<<a<<endl;
    return 0;
}

3、宏函数,不重视作用域。

二、内联函数的声明与定义

内联函数声明:inline 返回类型标识符 函数名(形参列表及形参标识符);

内联函数定义:inline 返回类型标识符 函数名(形参列表及形参标识符){函数体}

注意:1、须函数声明和函数定义同时加有关键字inline才算内联函数;

           2、编译器处理内联函数时,直接将内联函数代码拷贝一份到内联函数调用处;

           3、类内部成员函数,默认加上关键字inline。

三、内联函数与编译器关系

1、关键字inline,只是对编译器的一个建议,有些情况下加有关键字inline,编译器也不会将该函数做内联函数处理;

 2、函数体内存在循环、判断,函数体过于庞大及须对函数取地址,inline函数不是按内联函数处理;

3、一个好的编译器,会将短小的函数,隐式加入关键字inline。

四、总结:

代码编写时,无须特意为函数加上关键字inline。

 

 

 

 

 

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值