C++ 函数重载

简介: C++ 函数重载

前言

这篇文章将给大家介绍C++中的函数重载,函数重载在C++中是非常重要的一个概念希望大家能够好好理解。

一、什么是函数重载

1.用同一个函数名定义不同的函数

2.重载函数名字相同参数不同

重载函数示例:

下面三个函数构成了重载函数

int fun(void)
{
}
int fun(int a,int b)
{
}
int fun(char *s)
{
}

注意点:1.函数的返回值不作为函数重载的依据。

2.重载函数的类型不同

3.重载函数在本质上是相互独立的函数

4.函数重载是由函数名和参数列表决定的

二、编译器怎么区分不同的重载函数

#include <iostream>
using namespace std;
void fun(int i)
{
    printf("i = %d\n", i);
}
void fun(void)
{
    printf("hello world\n");
}
int main()
{
    fun(5);
    fun();
    return 0;
}

运行结果:

image.png

这个运行结果说明了编译器是能够区分出重载函数的,编译器可以通过函数的参数列表区分不同的重载函数。

三、重载函数的地址

上面我们说到重载函数的本质是不相同的函数,那么函数都不相同了地址肯定也是不同的。

重载函数无法通过函数名得到函数地址。

得到函数地址方法:使用函数指针

#include <iostream>
using namespace std;
void fun(int i)
{
  cout << i << endl;
}
void fun(void)
{
  cout << "hello" << endl;
}
int main()
{
  void (*pf)(int i) = fun;
  void (*pf1)(void) = fun;
  cout << pf << endl;
  cout << pf1 << endl;
  return 0;
}

当函数指针指向函数时,根据函数指针的类型严格寻找对应的重载函数。

总结

函数重载通过函数参数列表区分不同的同名函数,重载函数的本质是不同的函数。

相关文章
|
3月前
|
程序员 C++
C++中的函数重载有什么作用
【10月更文挑战第19天】C++中的函数重载有什么作用
30 3
|
7月前
|
编译器 C++
C++进阶之路:何为命名空间、缺省参数与函数重载
C++进阶之路:何为命名空间、缺省参数与函数重载
46 3
|
3月前
|
编译器 程序员 C++
C++中的函数重载是什么
【10月更文挑战第19天】C++中的函数重载是什么
43 0
|
8月前
|
存储 安全 编译器
【C++入门】缺省参数、函数重载与引用(下)
【C++入门】缺省参数、函数重载与引用
|
3月前
|
自然语言处理 编译器 Linux
【C++】巧用缺省参数与函数重载:提升编程效率的秘密武器
【C++】巧用缺省参数与函数重载:提升编程效率的秘密武器
|
5月前
|
编译器 程序员 C语言
C++函数重载
在实际开发中,有时候我们需要实现几个功能类似的函数,只是有些细节不同。例如希望交换两个变量的值,这两个变量有多种类型,可以是 int、float、char、bool 等,我们需要通过参数把变量的地址传入函数内部。在C语言中,程序员往往需要分别设计出三个不同名的函数,其函数原型与下面类似: void swap1(int *a, int *b); //交换 int 变量的值 void swap2(float *a, float *b); //交换 float 变量的值 void swap3(char *a, char *b); //交换 char 变量的
C++函数重载
|
3月前
|
程序员 C++ 开发者
C++入门教程:掌握函数重载、引用与内联函数的概念
通过上述介绍和实例,我们可以看到,函数重载提供了多态性;引用提高了函数调用的效率和便捷性;内联函数则在保证代码清晰的同时,提高了程序的运行效率。掌握这些概念,对于初学者来说是非常重要的,它们是提升C++编程技能的基石。
32 0
|
5月前
|
安全 编译器 C++
C++入门 | 函数重载、引用、内联函数
C++入门 | 函数重载、引用、内联函数
40 5
|
5月前
|
编译器 Linux C语言
【C++小知识】为什么C语言不支持函数重载,而C++支持
【C++小知识】为什么C语言不支持函数重载,而C++支持
|
6月前
|
存储 自然语言处理 编译器
【C++入门 三】学习C++缺省参数 | 函数重载 | 引用
【C++入门 三】学习C++缺省参数 | 函数重载 | 引用