C++中的引用与高级函数详解

 更新时间:2023年07月15日 10:05:51   作者:Wei&Yan  
这篇文章主要介绍了C++中的引用与高级函数详解,概念:引用是为已存在的变量取了一个别名,引用和引用的变量共用同一块内存空间,需要的朋友可以参考下

引用

定义:给变量起别名。

语法:数据类型&别名=原名。

int a=10;
int &b=a;
//(此时的a和b都指向了同一块空间,都可对里面的元素进行修改)

 对这两个变量名字任意一个进行修改,两变量的结果都会发生变化

 引用注意事项

1.引用必须初始化

int a=10; int &b=a;(必须等于一个变量)

2.引用初始化后,不可以改变(永远指向最初初始化指向的空间),初始化后只能进行赋值操作

int a=10;
int c=20;
int &b=a;
b=c;(将c赋值给b后,b和a的值都为20,但b指向的空间依然和a一样,不发生变化)

 引用的做函数参数

作用:函数传参时,可以利用引用的技术让形参修饰实参

优点:可以简化指针直接修改实参

/1.引用做函数的参数
void sweap(int& a, int& b)//可以当作函数传参的,传进去的是自己本身,在函数中对其进行修改后变量本身也会被修改(类似于地址传参)
{
	int temp = a;
	a = b;
	b = temp;
}

 引用做函数的返回值:

int& Add(int a, int b)
{
    static int c = a + b;//静态变量,存放在全局区域
    return c;
}

常量引用

void print(const int& val)
{//为了防止引用传参的时候变量在函数中被修改而不影响自己本身,可以加入const。这样变量就不会被修改
    val=20
    cout << "val=" << val << endl;
}

引用的本质:

在c++内部实现一个指针常量。

int a=10;
int &b=a;//int *const b=&a;
若直接赋值给一个常数
const int &b=10;//int temp=10;const int &b=temp;
加入const后变为只读,不可修改。

 函数高级

1.函数的默认参数

在c++中,函数的形参列表中的形参可以有默认参数

语法:返回值类型 函数名(参数=默认值){}

int func(int a, int b = 20)
{
	return a + b;
}

注意事项:

注意:
1.如果某个位置已经有了默认参数,那么从这个位置开始往后,从左到右都必须有默认值
eg:
b有了默认值,后面的所以形参都要有默认值
int test1(int a, int b = 20, int c);
2.如果函数声明有默认参数,函数实现就不能有默认参数
  声明和实现只能有一个有默认参数
int test2(int a = 20, int b = 239);
int test2(int a, int b)
{
}
int fun(int a=10,int b=20)
{
   retutn a+b;
}
int a = 10, b = 29;
	如果自己传入数据就用自己的数据,如果没有那么用默认数据。
	//cout << "a+b=" << func(a,20) << endl;//结果=39
	//cout << "a+b=" << func(a) << endl;//结果=30
	return 0;

 2.函数占位参数

c++中函数形参列表里面可以有占位参数,且传参的时候也当作一个形参,必选满足其形参数量
 占位参数中可以有默认值
void test3(int a, int =20)
{
}

3.函数重载:

作用函数名可以相同,提高复用性
条件:
同一作用域下
函数名称相同
函数参数类型行不通,或者参数个数不同,或者顺序不同

//void func(double a, int b);
//void func(int a, double);
//函数重载的注意事项:
//a.引用作为函数的重载的条件
void func(int &a);//int &a=10; 不合法
//调用:func(a);
void func(const int& a);//const int &a=10; 合法
//调用:func(10);
//b.函数重载碰到默认参数
void func2(int a);
void func2(int a, int b = 10);
//func2(10)//1,2都可以去调用,所以这样调用行不通。
//当函数重载碰到默认参数的时候会出现二义性。
//func2(10,20)//这种情况下可以行得通。

到此这篇关于C++中的引用与高级函数详解的文章就介绍到这了,更多相关C++高级函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言中的函数指针学习笔记

    C语言中的函数指针学习笔记

    这篇文章主要介绍了C语言中的函数指针的一些学习知识点记录,文中作者整理了一些比较interesting的函数指针用法,需要的朋友可以参考下
    2016-04-04
  • 深度剖析C语言结构体

    深度剖析C语言结构体

    今天小编就为大家分享一篇关于深度剖析C语言结构体,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • C语言通讯录管理系统课程设计

    C语言通讯录管理系统课程设计

    这篇文章主要为大家详细介绍了C语言通讯录管理系统课程设计,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • 漫谈C++哈夫曼树的原理及实现

    漫谈C++哈夫曼树的原理及实现

    给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。本文将通过图片为大家详细讲讲C++哈夫曼树的原理及实现,需要的可以参考一下
    2022-08-08
  • 关于C++11的统一初始化语法示例详解

    关于C++11的统一初始化语法示例详解

    C++之前的初始化语法很乱,有四种初始化方式,而且每种之前甚至不能相互转换,但从C++11出现后就好了,所以这篇文章主要给大家介绍了关于C++11的统一初始化语法的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
    2017-10-10
  • C语言goto语句简单使用详解

    C语言goto语句简单使用详解

    C语言中提供了可以随意滥用的 goto语句和标记跳转的标号,本文主要介绍了C语言goto语句简单使用详解,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 基于C语言实现简单扫雷游戏

    基于C语言实现简单扫雷游戏

    这篇文章主要为大家详细介绍了基于C语言实现简单扫雷游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • 浅析C语言中的数组及字符数组

    浅析C语言中的数组及字符数组

    这篇文章主要介绍了C语言中的数组及字符数组,是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-11-11
  • Qt调用MATLAB引擎混合编程的过程详解

    Qt调用MATLAB引擎混合编程的过程详解

    这篇文章给大家介绍了Qt调用MATLAB引擎混合编程的全过程,文中通过图文结合的方式给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-01-01
  • 基于matlab对比度和结构提取的多模态解剖图像融合实现

    基于matlab对比度和结构提取的多模态解剖图像融合实现

    这篇文章主要介绍了多模态医学图像配准与融合的概念、方法及意义,最后简单介绍了小波变换分析方法。感兴趣的小伙伴可以跟随小编一起学习一下
    2021-11-11

最新评论