前言
这篇文章将给大家介绍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; }
运行结果:
这个运行结果说明了编译器是能够区分出重载函数的,编译器可以通过函数的参数列表区分不同的重载函数。
三、重载函数的地址
上面我们说到重载函数的本质是不相同的函数,那么函数都不相同了地址肯定也是不同的。
重载函数无法通过函数名得到函数地址。
得到函数地址方法:使用函数指针
#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; }
当函数指针指向函数时,根据函数指针的类型严格寻找对应的重载函数。
总结
函数重载通过函数参数列表区分不同的同名函数,重载函数的本质是不同的函数。