当前位置: 首页 > news >正文

【C++】内联函数 ① ( 内联函数引入 | 内联函数语法 )

文章目录

  • 一、内联函数引入
    • 1、内联函数引入
    • 2、代码示例 - 宏代码片段 与 内联函数
  • 二、内联函数语法
    • 1、内联函数语法说明
    • 2、代码示例 - 内联函数基本语法





一、内联函数引入




1、内联函数引入


" 内联函数 " 是 C++ 语言中的一种特殊函数 , 其目的是为了提高程序的执行效率 ;


在 C++ 中 , 定义常量

const int a = 10

可以替换 C 语言中的 宏定义

#define a 10

使用 常量 可以 替代 宏定义 ;


宏定义分为两种 , 一种是 宏常数 , 另外一种是 宏代码片段 ;

  • C++ 中使用 常量 替代 宏常数 ;
  • C++ 中用于 替代 宏代码片段 的是 inline 内联函数 ;

C++ 中建议开发者使用 " 内联函数 " 替代 C 语言中的 " 宏代码片段 " ;


宏代码片段 示例 :

// 宏代码片段
#define FUN(a, b) ((a) < (b) ? (a) : (b))

内联函数 示例 : 下面的 内联函数 可以 替换 上面的 宏代码片段 , 二者的功能基本相同 ;

// 内联函数
inline int fun(int a, int b)
{return a < b ? a : b;
}

2、代码示例 - 宏代码片段 与 内联函数


在下面的代码中 , 分别定义了 宏代码片段 FUN(a, b) 和 内联函数 inline int fun(int a, int b) , 二者实现的功能基本相同 , 都可以实现获取 a 和 b 两个值之间的较小值 ;


代码示例 - 宏代码片段 与 内联函数 :

// 导入标准 io 流头文件 其中定义了 std 命名空间
#include <iostream>
// 导入 std 命名空间
using namespace std;// 宏代码片段 : 获取 a 和 b 中较小的值
#define FUN(a, b) ((a) < (b) ? (a) : (b))// 内联函数 : 获取 a 和 b 中较小的值
inline int fun(int a, int b)
{return a < b ? a : b;
}int main() {// 控制台暂停system("pause");return 0;
}




二、内联函数语法




1、内联函数语法说明


C++ 内联函数语法如下 :

inline 函数声明 {  // 函数体
}

函数的声明 包括 :

  • 函数名
  • 参数列表
  • 返回类型

在 函数声明 , 也就是 普通函数 之前加上 inline 关键字 , 就可以将 普通函数 声明为 内联函数 ;


内联函数 的 调用 与 普通函数一样 , 直接调用即可 ; 只是在编译时有区别 , 使用上没有区别 ;


2、代码示例 - 内联函数基本语法


下面的代码中 , 内联函数只是在 int fun(int a, int b) 函数声明之前 , 加上了 inline 关键字 ;

调用该函数时 , 直接使用 函数名 fun 调用即可 , 与普通函数调用方式相同 ;


代码示例 :

// 导入标准 io 流头文件 其中定义了 std 命名空间
#include <iostream>
// 导入 std 命名空间
using namespace std;// 宏代码片段 : 获取 a 和 b 中较小的值
#define FUN(a, b) ((a) < (b) ? (a) : (b))// 内联函数 : 获取 a 和 b 中较小的值
inline int fun(int a, int b)
{return a < b ? a : b;
}int main() {// 调用内联函数int a = fun(1, 2);// 打印内联函数调用结果printf("a = %d\n", a);// 控制台暂停system("pause");return 0;
}

执行结果 :

a = 1
请按任意键继续. . .

在这里插入图片描述

http://www.lryc.cn/news/157943.html

相关文章:

  • 聊聊springboot的ConfigurationProperties的绑定
  • Mysql和Oracle的语法区别?
  • F - LIS on Tree
  • 2023 年全国大学生数学建模B题目-多波束测线问题
  • qt creater11 翻译国际化教程教程:
  • 【AWS实验 】在 AWS Fargate 上使用 Amazon ECS 部署应用程序
  • matlab几种求解器的选择fsolve-sole-vpasolve
  • 无限访问 GPT-4,OpenAI 强势推出 ChatGPT 企业版!
  • MySQL的故事——Schema与数据类型优化
  • C++编译和链接
  • 【CSDN技术】Markdown编辑器如何使用-csdn博客编写入门
  • 【docker】运行redis
  • Paddle训练COCO-stuff数据集学习记录
  • SpringBoot 框架学习
  • java - lua - redis 完成商品库存的删减
  • dbeaver离线安装clickhouse连接驱动
  • 2024腾讯校招后端面试真题汇总及其解答(二)
  • datagrip 相关数据连接信息无缝迁移
  • 不就是G2O嘛
  • C#开发的OpenRA游戏之系统参数选项按钮
  • 苹果启动2024年SRDP计划:邀请安全专家使用定制iPhone寻找漏洞
  • std::make_shared和new初始化智能指针的区别
  • 无涯教程-JavaScript - ERFC.PRECISE函数
  • 2023国赛数学建模C题思路分析 - 蔬菜类商品的自动定价与补货决策
  • 手写Spring:第1章-开篇介绍,手写Spring
  • C语言中,字节对齐是一种重要的内存管理概念
  • 网络丢包问题,敢不敢这样定位?
  • 【漏洞复现】H3C路由器信息泄露任意用户登录
  • 随机数算法,SQL
  • 什么是软件测试+软件测试的分类【软件测试】