C++重载函数及引用

 一、重载函数

      在C语言中,如果我们定义两个同名的函数,编译器会提醒并报错,但有时我们会发现有的函数功能及其相似,却碍于C语言的规定而必须命名不同的函数,比如说用于交换两个数的函数:Swap1(int,int)Swap2(float,float), 而在C++中,我们可以将这两个函数用同一个名字进行命名,而这就是我们接下来要学习的重载函数的功能。

        就如同在汉语中,同一个字有多重含义。在C++中,一个函数也可以根据不同的环境选择不同的功能。汉字要看语境,而函数要看的则是传进来的参数。

函数重载:C++允许在同一作用域中声明几个功能类似的同名函数,但这些同名函数的形参列表                   (参数个数或参数类型或类型顺序)必须不同

#include<iostream>
using namespace std;

int Add(int x,int y)
{
    return x + y;
}

1.参数个数不同
int Add(int x,int y)
{
    return x + y;
}

2.参数类型不同
double Add(double x,int y)
{
    return x + y;
}

3.参数顺序不同
double Add(int x,double y)
{
    return x + y;
}

 二、引用

2.1、引用的概念

2.1.1、概念

        引用并非是新定义出一个变量,而是给已经存在的变量起一个别名。它与它引用的变量共用一块内存空间。

2.1.2、书写方式

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

int a = 10;

int& b = a;

        b即为a的别名,改变b即可改变a。

2.2、引用特性 

1、引用在定义时必须初始化;

2、一个变量可以有多个引用;

3、引用一旦引用一个实体,就不可以引用其他实体。

int a = 10;

//int& b;    必须初始化,不然编译时会出错

int& b = a;

int& rb = a;//可以有多个引用

注意:引用常量时,需加const进行修饰。 

2.3、功能

        由于改变引用变量就可以改变其对应的本体变量,因此可以用它来代替指针。

如:用int Add(int& a,int& b)来代替int Add(int* a,int*b)。

2.4、与指针的区别

1. 引用概念上定义一个变量的别名,指针存储一个变量地址。

2. 引用在定义时必须初始化,指针没有要求。

3. 引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任何

一个同类型实体 。
4. 没有NULL引用,但有NULL指针。
5. 在sizeof中含义不同:引用结果为引用类型的大小,但指针始终是地址空间所占字节个数(32
位平台下占4个字节)。
6. 引用自加即引用的实体增加1,指针自加即指针向后偏移一个类型的大小。
7. 有多级指针,但是没有多级引用。
8. 访问实体方式不同,指针需要显式解引用,引用编译器自己处理。
9. 引用比指针使用起来相对更安全。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值