内联函数和重载函数

本文介绍了C++的内联函数和重载函数。内联函数是为降低小程序调用开销,在函数名前加inline,适合1 - 5行小程序,不能含复杂控制结构和递归。重载函数是同名但形式参数不同的函数,编译器根据参数类型和个数匹配调用,返回值不影响重载匹配。

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

开发工具与关键技术: Visual Studio / C++
作者:何文涛
撰写时间:2019-5-2

内联函数:

内联函数是C++语言为降低小程序用开销而采取的一种机制。
定义内联函数的方法是,在函数名第一次出现时,在函数名之前冠以关键字inline。通常在函数原型中指定。若已在函数原型中指定inline,则函数定义时不能重复给出。
内联函数原型为:inline 类型 函数名,形式参数表;
内联函数的调用方法与其他普通函数相同。

说明:
1, 若inline不在函数名第一次出现时指定,则编译器把它当做普通函数处理。
2, 2,一般内联函数只适合于1-5行的小程序。在内联函数中,不能含有复杂的流程控制语句。例如,不能含有多分支语句和循环语句,否则inline无效。
3, 内联函数中吧不能使用递归函数。

作用于:
如果函数体内出现循环或者其它复杂的控制结构的时候,这个时候处理这些复杂控制结构所花费的时间远大于函数调用所花的时间,因此如果将这类函数声明为内联函数意义不大,反而会使得编译后可执行代码变长。
所以通常在程序设计过程中,我们会将一些频繁被调用的短小函数声明为内联函数。

关键字:inline
注意:inline 关键字放在函数声明处不会起作用;

下面就举了简单的例子
如图所示:

在这里插入图片描述

需要定义内联函数时候就在前面加一个关键字:inlie。
否则编译器就当普通函处理了。
首先判断传输过来的实参,判断它的大小判断最大那个通过值传递传回主函数,
所以传回去的已经是三个传进来的最大一个。

注意:是在函数定义时增加 inline 关键字,而不是在函数声明时。在函数声明
时增加 inline 关键虽然没有错误,但是也没有任何效果

在这里插入图片描述

首先定义了一个int类型的内联函数,函数名为d。
定义了int类型的i,j,k,m。
然后接收内联函数传递回来的值再输出。

在这里插入图片描述
以上是输出结果

重载函数:
重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。这就是重载函数。

C++语言允许定义多个重名函数,各个函数有不同的参数集,这些函数称为重载函数。编译器根据不同参数的类型和个数产生调用匹配。函数重载常用于生成几个类似任务而处理不同数据个数、类型的同名函数。

作用:
多个同名函数有不同的参数集
编译器根据不同参数的类型和个数产生调用匹配
函数重载用于处理不同数据类型的类似任务

C++编译器只根据函数参数表(参数类型和个数)进行重载版本的调用匹配,函数返回值的内容不起作用。例如:

int add(int,int);
double add(int,int);

这两个不是重载函数,C++编译器认为函数重复说明。

int add(int,int);
double add(double,char);

这个才是重载函数。

下面就举了例子,如图所示;

在这里插入图片描述

图中定义了三个重载函数,重载函数条件要类型,数量不一致。
主函数内写了调用的语句。
第一个调用:
调用了函数Man(int a,int b)因为这里要传递的参数是两个整型。

第二个调用:
调用了函数(double a, double b)因为这里要传递的是两个浮点数。

第三个调用:
调用了函数Max(double a, double b, double c)因为只有这个是定义三个
参数

第四个调用:
编译器报错了,因为这两个数据不符合以上的重载数据,因为没有一个重载函数的
类型是一个整型和浮点型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值