C++基础精讲篇第2讲:函数重载+引用

      这一讲是承接《 C++基础精讲篇第1讲》的内容补充之一。读者们可以先把上一讲的知识学习了以后,再学习这一讲的相关知识。这一讲主要为大家分享C++特有的函数重载引用这两个重要的概念,这是深入学习C++必须掌握的知识点,希望大家在我的文章的帮助下,能有所收获,那我们就开始学习吧。

C++基础精讲篇2—学习思维导图

目录

1、函数重载

1.1概念

1.2 案例分析

 1.3 函数重载的使用注意事项

 1.4 补充知识:extern"C"

2、引用

2.1 类型& 引用变量名(对象名)==引用实体

2.2  引用相关特性

2.2.1 引用在定义时必须初始化

2.2.2 一个变量可以有多个应用

2.2.3 引用一旦引用一个实体,不能再引用其他实体

2.3 引用使用场景

2.3.1 引用做参数

2.3.2 引用做返回值

2.4 常引用

2.4.1 权限平移

2.4.2 权限放大

2.4.3 权限缩小

2.4.4  权限总结

2.4.5  引用权限举例说明

2.4.6 补充(关于隐式类型转换内部逻辑)

2.5 引用和指针的区别

2.5.1、从语法概念角度分析

2.5.2、从底层原理角度分析

2.5.3、不同点总结

3、结语



 1、函数重载

1.1概念

       函数重载是函数的一种特殊情况的,C++中允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数、类型、顺序)必须不同,其常用来处理实现功能类似数据类型不同的问题。

1.2 案例分析

       以下面代码为例分析,函数名相同,但形参列表不同,我们依然可以实现同名调用,而在C语言中,是不允许函数名相同的,这就是C++不同于C语言的地方之一,正因为有了函数重载概念,对我们开发者来说使用非常方便。

#include<iostream>
using namespace std;
//函数重载
//使用场景举例说明:这种函数同名使用在c语言中是不支持的,在c语言中需要用到不同的函数名,如:Swap_1;Swap_2
void Swap(int*p1, int*p2)
{
	int tmp = *p1;
	*p1 = *p2;
	*p2 = tmp;
}

void Swap(double*p1, double*p2)
{
	int tmp = *p1;
	*p1 = *p2;
	*p2 = tmp;
}
int main()
{
	int a = 1, b = 2;
	double c = 1.1, d = 2.2;
	Swap(&a, &b);
	Swap(&c, &d);
	//其实在这里利用cout,自动识别类型,利用到了函数重载原理
	cout << a << endl;
	cout << b << endl;

	return 0;
}

       除了上面的例子以外,C++中的输入流和输出流其实也是函数重载的表现,因为在上一讲中我们提到过C++的输入流和输出流不用指定数据类型同样可以识别,其原理就是利用了函数重载。

       之所以C++能够有函数重载,这是因为C++具有不同于C语言的函数名修饰规则,正因为该规则使得在同名函数的条件下,只要形参不同,开发者就可以使用同名函数进行操作,关于函数重载的详细介绍,推荐大家去看这篇博客,个人认为描述得很详细,看完就能基本明白是怎么一回事了

建议阅读的函数重载博客链接:C++的函数重载 - 吴秦 - 博客园 (cnblogs.com)

 1.3 函数重载的使用注意事项

1、当同名函数中形参类型相同,然后不同的是交换了形参的顺序,这种是不被允许的,不属于函数重载;

2、函数名相同,内部形参顺序类型均相同,但返回值不同也不能构成函数重载,因为在调用时是无法区分的;

 1.4 补充知识:extern"C"

      在C++工程中可能需要将某些函数按照C的风格来编译,在函数前加extern "C",意思是告诉编译器,将该函数按照C语言规则来编译。代码示意如下:

extern "C" int Add(int left, int right);
int main()
{
Add(1,2);
return 0;
}

2、引用

       引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。简而言之,引用的作用是对标指针的。

2.1 类型& 引用变量名(对象名)==引用实体

#include<iostream>
//引用,其作用是对标指针,简而言之就是给变量取别名
using namespace std;

int main()
{
	int a = 0;
	int& b = a;//这里&符号表示引用,和int b=a;不一样
	cout << &b << endl;//这里&符号表示取地址
	cout<< endl;
	cout << &a << endl;

	a++;
	b++;
	return 0;
}
使用引用的基本方法

        当读者们学习了我前一讲的文章以后,那么对于上面的程序代码的理解肯定是没有问题的。在上面的程序展示过程中,“int&”中的符号“&”代表的含义就是引用,也就是说a的别名是b,在后面符号“&a”和“&b”表示的就是我们熟知的取地址操作符,通过打印输出可以看到变量a和变量b的地址是相同的。那当我们对变量b修改会改变变量a吗?答案是会改变的

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值