小工具知识网

当前位置: 首页 > 行业知识 > C++初阶入门之函数重载,引用以及一些新语法详细解析

行业知识

C++初阶入门之函数重载,引用以及一些新语法详细解析

2026-10-19 12:29:17 来源:互联网转载

个人主页:���我进入主页

专栏分类:C语言初阶  C语言进阶  数据结构初阶    Linux    C++初阶    

欢迎大家点赞,评论,收藏。

一起努力,一起奔赴大厂

目录

 一.前言

二.函数重载

2.1函数重载的类型

2.2函数重载原理

三.引用

3.1引用的基本使用和语法

3.2引用的使用场景

3.2.1参数

3.2.2返回值

3.3引用经常出现的错误

3.4引用和指针的差别和运行比较

3.4.1引用和指针语法上的不同

3.4.2引用和指针在底层上

 3.5传引用和传值运行的差别

3.6常引用

3.6.1常引用的写法

3.6.2临时变量具有常性

四.auto关键字

4.1基本使用

4.2不适用的场景

五.新语法

5.1for循环的新写法

5.2空指针的错误

六.总结


 一.前言

        在前面我们写过关于命名空间和缺省参数的内容,今天我们的内容主要包括函数重载,引用和一些新语法,其中函数重载是应对函数命名冲突所产生的,引用是由于指针太过于麻烦祖师爷对其进行修改,是一种方便高效的新方法,我们的新语法包含auto关键字的使用,for函数在c++11中的新的方式,以及在c++98中一个错误以及在c++11中是如何进行修改的。在这篇文章中我会使用Linux的g++为大家讲解函数重载,这些问题在下面的文章中我会一一为大家解答。

二.函数重载

2.1函数重载的类型

        函数重载就是函数的名字相同,但是函数的参数不同,参数不同包括参数个数,参数类型这两类,例如下面的代码:

int Add(int a, int b){return a + b;}double Add(double a, double b){return a + b;}

这里就是函数的参数类型不同,对于下面的代码也是函数的参数类型不同。

double Add(int a, double b){return a + b;}double Add(double a, int b){return a + b;}

接下来的代码属于函数的参数个数不同,代码如下:

double Add(int a, double b){return a + b;}double Add(double a, int b,int c){return a + b + c;}

2.2函数重载原理

        为什么会支持函数重载呢?这是如何实现的呢?我们知道一个程序的运行需要经过预处理,编译,汇编,链接这四种,在预处理阶段我们是将头文件展开,宏的替换,条件编译,注释的替换这几部分,在编译阶段是检查语法,将代码转成汇编代码,汇编代码是将汇编代码转为二进制代码,链接是将代码链接,符号表进行合并。我们现在vs中演示一下为什么会有函数重载,我们先看,由于预处理是将头文件展开,宏的替换,条件编译,注释的替换,对于函数重载没有影响,编译阶段,由于编译阶段需要对代码检查语法,所以我们的函数重载和这个有关,我们分三个文件进行代码的编写,第一个文件内容为

#pragma once#includeint Add(int a, int b);int Add(int a, int b, int c);

 第二个文件的内容为

int Add(int a, int b){return a + b;}int Add(int a, int b, int c){return a + b + c;}

第三个文件的内容为

#include"test.h"int main(){int ret1 = Add(1, 2);int ret2 = Add(1, 2, 3);return 0;}

我们进入调试然后看看函数的汇编代码:

 我们可以看到它是去call这个Add函数,Add后面是函数的地址,我们可以看到第一个Add函数的地址为0X7FF7CFD211C7,第二个Add函数的地址为0X7FF7CFD21208,我们可以看到这个两个函数,在Linux中我们也用这个进行演示,我们看到

所以我们可以看到第一个Add为_Z3Addii第二个Add为_Z3Addiii所以我们可以看到这是两个函数。

我们可以看到它call的是函数名,所以c语言不支持函数重载。

三.引用

3.1引用的基本使用和语法

        你还记得我们C语言中的指针吗,还记得被指针支配的痛苦吗?一级指针,二级指针,想想这些是不是还后背发凉,在我们的链表那里我们用到了二级指针,想要写出这些对指针的了解必须深刻,你是不是也感觉指针是非常的难受呢?我们的祖师爷也因为对指针比较烦所以写出了我们引用的这个语法,那引用应该怎末去写呢?让我们看下面的代码:

#includeusing namespace std;int main(){int a = 1;int& b = a;cout 

上一篇:为什么充电宝?

下一篇:3100服务器怎么拆?