C++函数重载的简单介绍

这篇具有很好参考价值的文章主要介绍了C++函数重载的简单介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

个人主页:平行线也会相交
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创
收录于专栏【C++之路】
C++函数重载的简单介绍

中华文化博大精深,我们知道在我们的汉语中,每个词语都有着其不同的含义,甚至是一个词语中有多个含义,我们把它称之为一词多义。比如说加油一词,我们可以理解为给汽车加油,当然也可以在小伙伴进行运动会比赛时给我们的小伙伴喊加油,所以加油在不用的情形却有着不一样的含义。在C++中,也会有类似的现象—重载函数

重载函数概念

重载函数:是函数的一种特殊情况,在C++中允许同一作用域中声明一个功能类似的同名函数。这些同名函数的形参列表(参数个数或类型或类型顺序)不同。一般用来处理功能类似但数据类型不同的问题。说白了就是一个函数有多个意思

还是来进行举例:

#include<iostream>
using namespace std;

int Add(int left, int right)
{
	cout << "int Add(int left, int right)" << endl;
	return left + right;
}

double Add(double left, double right)
{
	cout << "double Add(double left, double right)" << endl;
	return left + right;
}

int main()
{
	cout << Add(10, 20) << endl;
	cout << Add(10.10, 20.20) << endl;
	return 0;
}

C++函数重载的简单介绍
要注意一个点:构不构成重载对函数的返回值没有任何要求,比如:
C++函数重载的简单介绍
我们可以看到当返回值不同是不会构成重载。上面定义的同名函数的函数名虽然相同但是参数不同,既然上图不构成重载函数的话当然就不能编译通过了,所以就会报错即仅仅是函数的返回值不同的话是不构成函数重载的。而参数不同主要分为三种类型的参数不同:参数个数、参数类型、参数顺序。上面演示的是参数类型不同,同时再次强调函数重载对函数的返回值是没有要求的(比如两个函数的函数相同,参数也相同,但是函数的返回值不同,此时这两个函数是不构成函数重载的)。所有对于构成函数重载的话一定是函数的参数(分为三种)不同。

参数类型不同

参数类型不同的话我们刚刚已经看到了,即int Add(int left, int right)和double Add(double left, double right)就属于参数类型不同的情况,这里构成重载。现在我们来看看当函数的类型不同时会不会构成函数重载:

int Add(int left, int right)
{
	cout << "int Add(int left, int right)" << endl;
	return left + right;
}

double Add(double left, double right)
{
	cout << "double Add(double left, double right)" << endl;
	return left + right;
}

C++函数重载的简单介绍

参数个数不同

参数个数不同的情况如下:

void func()
{
	cout << "func()" << endl;
}

void func(int a)
{
	cout << "func(int a)" << endl;
}

我们来看看什么当一个参数也不传的时候运行起来会怎么样:
C++函数重载的简单介绍
在来看看传一个参数时又会是怎么样呢?请看:
C++函数重载的简单介绍
这里当参数个数不同时也会构成函数重载,这里很好理解,就不过多赘述了。

参数顺序不同

我们现在来看看当函数的参数顺序不同时是否会构成函数重载。

void func(int a, char b)
{
	cout << "func(int a, char b)" << endl;
}

void func(int b, char a)
{
	cout << "func(int b, char a)" << endl;
}

上图算不算构成函数重载呢?不妨我们来运行一下:
C++函数重载的简单介绍
呵呵,好可惜,编译器直接给我们报错了,那到底时什么原因导致编译器给我们报错呢?我们现在知道参数顺序不同时可以进行构成函数重载。好了,重点来了:上图代码中我们对两个函数中参数类型的顺序是没有发生改变的,我们改变的仅仅是函数参数的名字的顺序而已。所以如果我们仅仅是改变函数参数的名字的顺序的话,这里是不构成函数重载的,仔细观察我们可以看到。我们可以想一想如果我们真的传参给这个同名函数的形参的话,我们应该调用哪一个函数呢(由于函数参数类型的顺序是一样的,所以编译器不知道我们要调用哪一个函数,所以就报错了,说白了就是存在歧义,编译器不知道该调用哪个函数了)。所以这就会给我们的编译器带来很大的麻烦。那到底是怎样的函数顺序不同才可以构成函数重载呢?事实上只有函数参数的类型顺序不同才可以构成函数重载。
既然我们现在知道只有函数参数的类型发生顺序不同的时候才会构成函数重载,
下面我们就来正式的看看函数参数类型的顺序是不同的时候,是如何构成函数重载的,请看下面代码:

void func(char a, int b)
{
	cout << "func(char a, int b)" << endl;
}

void func(int a,char b)
{
	cout << "func(int a,char b)" << endl;
}

我们在这里可以清楚的看到上面代码中两个函数的参数类型的顺序是不一样的,运行结果如下:
C++函数重载的简单介绍
所以这才是函数参数类型的顺序发生改变是构成的函数重载。
现在我们在来看一看下面的代码是否会构成函数重载呢?

#include<iostream>
using namespace std;

void func()
{
	cout << "func(char a, int b)" << endl;
}

void func(int a = 0)
{
	cout << "func(int a,char b)" << endl;
}
int main()
{
	//func('a', 1);
	//func(2, 'b');
	func();
	return 0;
}

首先:

void func()
{
	cout << "func(char a, int b)" << endl;
}

void func(int a = 0)
{
	cout << "func(int a,char b)" << endl;
}

这段代码中的函数的确构成了函数重载,但是与此同时存在这一个潜在的问题,那就是当我们无参函数的时候会出现问题,请看:
C++函数重载的简单介绍
问题就出现在无参调用的时候会出现问题,即编译器(出现歧义)会进行报错,编译器不知道我们要调用哪个函数(不明确的调用),即如上图所示。

好了,以上就是对C++中函数重载的简单认识。
就到这里吧,再见啦各位!!!文章来源地址https://www.toymoban.com/news/detail-421776.html

到了这里,关于C++函数重载的简单介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • c++ ——命名空间、缺省函数、函数重载

    在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存 在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化, 以避免命名冲突或名字污染,namespace的出现就是针对这种问题的 简单一句话命

    2024年02月16日
    浏览(37)
  • C++ 面向对象(3)——重载运算符和重载函数

    C++ 允许在同一作用域中的某个 函数 和 运算符 指定多个定义,分别称为 函数重载 和 运算符重载 。 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。 当您调用一个 重载函数 或 重载运算符 时

    2024年02月10日
    浏览(39)
  • C++入门:函数缺省参数与函数重载

    目录 1.函数缺省参数 1.1 缺省参数概念 1.2 缺省参数分类 2.函数重载 2.1 函数重载概念 2.2 C++支持函数重载的原理 缺省参数是 声明或定义函数时 为函数的 参数指定一个缺省值 。在调用该函数时,如果没有指定实 参则采用该形参的缺省值,否则使用指定的实参,有点备胎的意

    2024年02月12日
    浏览(23)
  • 函数重载和引用【C++】

    函数重载: 重载函数是函数的一种特殊情况。 为方便使用,C++允许在 同一作用域 中声明几个功能类似的 同名 函数,但是这些同名函数的形式参数(指1.参数的个数 2.类型 3.顺序)必须 至少有一个 不同 根据这些同名函数的参数表的不同, 达成传入参数类型不同,调用的函

    2024年04月08日
    浏览(47)
  • 【C++】函数重载及引用

    目录 一、函数重载  1、函数重载的概念  2、名字修饰 二、引用  1、引用概念  2、引用特性  3、常引用  4、引用的使用场景    4.1 做参数    4.2 做返回值  5、传值、传引用效率比较  6、引用和指针的区别 函数重载: 是函数的一种特殊情况,C++允许在 同一作用域中 声明

    2024年02月10日
    浏览(29)
  • 【C++入门】函数重载

    函数重载就是在同一个作用域内,允许存在参数不同的同名函数 。 例子: 例子: 例子: 注意这里的顺序指的是参数类型的顺序,而不是参数名的顺序。 比如下面的例子就不构成函数重载。 C++ 支持函数重载的本质,其实是因为 C++ 特殊的函数名修饰规则。 我们知道 C 语言

    2024年02月15日
    浏览(27)
  • 【C++】函数重载详解

    我编写了一个简单的 Add 函数来执行整数相加,它既简单又能够达到我想要的效果。然而,如果我现在需要一个能够执行浮点数相加的函数怎么办呢?一种方法是重新编写一个函数,但是问题是该如何命名呢?已经有一个 Add 函数了,如果取相同的名字就会出现命名冲突,而重

    2024年02月03日
    浏览(26)
  • C++之函数重载【详解】

      重载函数是函数的一种特殊情况,为方便使用,C++允许在同一中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个函数完成不同的功能。这就是重载函数。重载函数常用来实现功能类似而所处理的

    2024年02月06日
    浏览(26)
  • C++系列-函数重载

    函数名可以相同, 提高复用性 同一个作用域下 函数名相同 函数参数不同 – 参数个数不同 – 参数顺序不同 – 参数类型不同 不可以使用返回值作为重载的条件 引用作为重载 参数可以分为const和非const。 函数重载遇到默认参数

    2024年02月12日
    浏览(26)
  • 【C++初阶】C++入门——缺省参数、函数重载

     缺省参数是 声明或定义函数时为函数的参数指定一个缺省值 。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。  上面代码在 fun 函数的形参部分给了缺省值10,这意味着在调用 fun 函数的时候可以传参,也可以不传参,如果传参了那形参

    2024年02月11日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包