C++:函数特性

在这里插入图片描述
一、函数参数默认值
在这里插入图片描述
在这里插入图片描述
上图中:声明函数时函数参数默认值,定义函数的时候不用;


二、函数重载

定义:
在这里插入图片描述
上图中:相同作用域一般指同一个命名空间;

例子:在这里插入图片描述
在这里插入图片描述
上图:右边红的是编译后的函数名;调用的时候写左边的,系统会自动根据参数识别调用的哪个函数;

重载函数的作用:比如求两个或三个数的最大值的函数,就可以只用一个函数名,而不用再去想其他的函数名,系统会自动识别;

实际用中,若:

void fun(int a,int b,int c=10);
void fun(double a,double b);

fun(1,2)调用第一个;

若:

void fun(int a,int b,int c);
void fun(double a,double b);

fun(1,2)调用第二个;


三、内联函数

内联函数时一种编译方式

跟普通函数相比,定义的时候是相同的,调用的时候不同:
在这里插入图片描述
上图中:内联函数节省了②和④,加快了程序运行;

例子:
在这里插入图片描述
在这里插入图片描述

思考:为什么不所有函数都使用内联方式呢?
答案:
1、内联编译是建议性的,由编译器决定;(只是向编译器建议,不一定处理);
2、逻辑简单,调用频繁的函数建议使用内联(for循环、while循环等不行);
3、递归函数无法使用内联方式;


四、单元巩固

使用函数的重载完成返回最大值的方法。
现在有一个数组,定义一个方法getMax(),利用函数的重载,分别实现:
1、随意取出数组中的两个元素,传到方法getMax()中,可以返回较大的一个元素。
2、将整个数组传到方法getMax()中,可以返回数组中最大的一个元素

#include <iostream>
using namespace std;
/**
  *函数功能:返回a和b的最大值
  *a和b是两个整数
  */
int getMax(int a, int b)
{
    return a > b ? a : b;
}

/**
  * 函数功能:返回数组中的最大值
  * arr:整型数组
  * count:数组长度
  * 该函数是对上面函数的重载
  */
int getMax(int *array,int n)
{
    //定义一个变量并获取数组的第一个元素
    int temp=array[0];
	for(int i = 1; i < n; i++)
	{
        //比较变量与下一个元素的大小
		if(temp < array[i])
		{
            temp=array[i];
		}	
	}
	return temp;
}

int main(void)
{
    //定义int数组并初始化
	int numArr[3] = {3, 8, 6};
    
    //自动调用int getMax(int a, int b)
	cout << getMax(3, 6) << endl;
    
    //自动调用返回数组中最大值的函数返回数组中的最大值
	cout << getMax(numArr, 3) << endl;
	return 0;
}
发布了39 篇原创文章 · 获赞 54 · 访问量 2100

猜你喜欢

转载自blog.csdn.net/qq_42745340/article/details/104506678
今日推荐