C++ 函数重载

举报
yd_274589494 发表于 2023/07/26 12:17:13 2023/07/26
【摘要】 @TOC 前言这篇文章将给大家介绍C++中的函数重载,函数重载在C++中是非常重要的一个概念希望大家能够好好理解。 一、什么是函数重载1.用同一个函数名定义不同的函数2.重载函数名字相同参数不同重载函数示例:下面三个函数构成了重载函数int fun(void){}int fun(int a,int b){}int fun(char *s){}注意点:1.函数的返回值不作为函数重载的依据。2....

@TOC


前言

这篇文章将给大家介绍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;
}

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

总结

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

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。