C++ 函数详解(内联函数、函数指针、默认参数、函数重载)

C++函数详解

内联函数

内联函数的函数体限制:
1、内联函数中,不能含有复杂的结构控制语句
2、递归函数(自己调用自己的函数)是不能被用来做内联函数的。
3、内联函数只适合于只有l到5行的小函数

#include <iostream>
using namespace std;
inline double calc(double x)
{
       return x*x;
}
int main()
{
       cout << calc(3 + 2) << endl;
       return 0;
}

函数指针

#include <iostream>
using namespace std;
int calc(int a, int b)
{
       return a*b;
}
int main()
{
       int(*pf)(int, int);//声明函数指针:用*pf代替函数名
       pf = calc;//赋值
       int x = (*pf)(3, 2);//调用方式一
       cout << x << endl;//6
       x = pf(4, 5);//调用方式二
       cout << x << endl; //20
       return 0;
}

默认参数

在具有多个参数的函数中指定默认值时,默认参数都必须出现在不默认参数的右边,一旦某个参数开始指定默认值,它右边的所有参数都必须指定默认值
int f (int i1, int i2 = 2, int i3 = 3); // 正确
int g (int i1, int i2 = 2, int i3); // 错误, i3未指定默认值
int h (int i1 = 1, int i2, int i3 = 3); // 错误, i2未指定默认值

在调用具有默认参数的函数时, 若某个实参默认,其右边的所有实参都应该默认
例如, 一个函数声明如下int f(int i1 = 1, int i2 =2, int i3 = 3);
调用函数 f()
f(); //正确, i1=1, i2=2, i3=3
f(3); //正确, i1=3, i2=2, i3=3
f(2, 3); //正确, i1=2, i2=3, i3=3
f(4, 5, 6); //正确, i1=4, i2=5, i3=6
f(, 2, 3); //错误, i1默认,其右边的i2和i3没有默认

函数重载

参数列表又叫参数签名,包括参数的类型、参数的个数和参数的顺序,只要有一个不同就叫做参数列表不同
函数名相同,参数列表不同的函数称为函数重载
重载函数的返回类型可以不同
编译器不以形参名来区分,不以返回值来区分

#include <iostream>
using namespace std;
void Swap(int *a, int *b); //交换 int 变量的值
void Swap(double *a, double *b); //交换 double 变量的值
int main()
{
       //交换 int 变量的值
       int n1 = 100, n2 = 200;
       Swap(&n1, &n2);
       cout << n1 << ", " << n2 << endl;
       //交换 double 变量的值
       double f1 = 12.5, f2 = 56.93;
       Swap(&f1, &f2);
       cout << f1 << ", " << f2 << endl;
}
//交换 int 变量的值
void Swap(int *a, int *b) {
       int temp = *a;
       *a = *b;
       *b = temp;
}
//交换 double 变量的值
void Swap(double *a, double *b) {
       double temp = *a;
       *a = *b;
       *b = temp;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值