【C++技能树】原来比C方便这么多 --缺省参数、函数重载、引用讲解

这篇具有很好参考价值的文章主要介绍了【C++技能树】原来比C方便这么多 --缺省参数、函数重载、引用讲解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 【C++技能树】原来比C方便这么多 --缺省参数、函数重载、引用讲解

Halo,这里是Ppeua。平时主要更新C语言,C++,数据结构算法......感兴趣就关注我吧!你定不会失望。

🌈个人主页:主页链接

🌈算法专栏:专栏链接

     我会一直往里填充内容哒!

🌈LeetCode专栏:专栏链接 

    目前在刷初级算法的LeetBook 。若每日一题当中有力所能及的题目,也会当天做完发出

🌈代码仓库:Gitee链接

🌈点击关注=收获更多优质内容🌈

目录

1.缺省参数:

2.函数重载:

3.引用:

完结撒花:

【C++技能树】原来比C方便这么多 --缺省参数、函数重载、引用讲解 

1.缺省参数:

在C++中

如果想要在一个函数不给定具体参数的情况下使用一个默认值就可以用到缺省参数这个概念.

具体用法如下在声明/定义时给定默认值即可,

int add(int a=0,int b=1);
int add(int a,int b)
{
    return a+b;
}
int main()
{
    cout<<add(12);
}

例如这里就给定了第一个参数.而没有给第二个参数,所以默认为1,所以A+B的值就变成了13

注意!!

int add(int a=0,int b=1);
int add(int a=0,int b=1)
{
    return a+b;
}

不能在声明与定义同时给出默认参数,即使值是一样,这样也是错的.

所以只能在一个地方(声明/定义)给定默认值.一般在声明时给出

可以全部给定默认值,也可以只给一部分.但只能从右到左连续的给出.

int add(int a,int b=1,int c=2)
{
    return a+b+c;
}
int main()
{
    cout<<add(12);
}

这样就属于跳着给,也是不可以的

int add(int a=1,int b,int c=2)
{
    return a+b+c;
}

2.函数重载:

在C中,若想要使用使用一个add函数返回两数相加的结果.因为这个两数可以是浮点数,整数等.若我们想要准确的表示两个数据相加.就得定义若干个异名函数.

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

例如这里定义了addi表示两个整数相加,又定义了addd表示两个浮点数相加.

那如果我是写库的作者,我需要让一个仅需要相加功能的调用者去了解这么多函数的名字,仅用来区分他们相加的数据类型嘛?

这样的工作效率显然是非常低的,所以C++改进了他的方法.

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

这两个同名函数,因为参数类型的不同,所以在C++中可以同时存在. 

这就是函数重载的概念.

区分两个函数是否相同不再仅通过名字,而是通过参数个数/类型/类型顺序来区分.

返回值不同不作为区分函数重载的规则,因为你调用该函数的时候可以不适用返回值。

void add(int a,double b); 类型顺序

void add(double a,int b); 类型顺序 参数个数

void add(double a,int b,int c); 参数个数

 为什么能进行区分呢?

因为在C++中,在编译阶段,会这样对函数进行命名.

第一个函数被命名为:addid 表示参数类型为int 与 double

第二个函数被命名为:adddi 表示参数类型为double 与 int

第三个函数被命名为: adddii 表示参数类型为double、int、int 

使用重载函数并不会导致程序运行变慢,因为改变名字的事是在编译阶段就完成了,程序运行阶段直接去寻找对应的函数.所以并不需要有这种担心.

3.引用:

先来看看我们最开始学编程的时候学习的代码

int a=0;

int b=a;

这段代码很简单,但他在内存里做的事相信很多uu们并不知道.我们现在来看看

【C++技能树】原来比C方便这么多 --缺省参数、函数重载、引用讲解

这段代码是将a指向的数据又拷贝了一份放在b中,也就是a、b变成了两个独立的个体.他们的共同点也就是值相同.

我们可以打印他的地址来看看

 int a=0;

 int b=a;

 printf("a:%p \nb:%p",&a,&b);

【C++技能树】原来比C方便这么多 --缺省参数、函数重载、引用讲解 

结果如图所示,说明我们说的是对的.

那我们再来看看C++新加入的引用特点.

 int a=0;

 int &b=a;

 printf("a:%p \nb:%p",&a,&b);

仅在b前面加上一个&(注意!!!加在a前表示取地址)

再打印地址,看看会发生什么.

【C++技能树】原来比C方便这么多 --缺省参数、函数重载、引用讲解

 他们的内存地址相同了!也就是现在的内存模型应该长这样

【C++技能树】原来比C方便这么多 --缺省参数、函数重载、引用讲解

 a b都表示这块内存地址的一个别名.除了名字不同,其他都是相同的.也就是改变a也会改变b

这段代码同样的非常简单,但是这样写是错的,因为形参的改变不影响实参,我们仅需这样改动 

void swap(int a,int b)
{
    int tmp=a;
    a=b;
    b=tmp;
}
int main()
{
    int a=2;
    int b=3;
    swap(a,b);
    cout<<"a:"<<" "<<a<<endl;
    cout<<"b: "<<b<<endl;
}

【C++技能树】原来比C方便这么多 --缺省参数、函数重载、引用讲解  

 在函数调用参数前加上&,表示对实参的引用,这样他们使用的是同一块内存空间.也就可以直接改变了

void swap(int &a,int &b)
{
    int tmp=a;
    a=b;
    b=tmp;
}
int main()
{
    int a=2;
    int b=3;
    swap(a,b);
    
}

【C++技能树】原来比C方便这么多 --缺省参数、函数重载、引用讲解 

 

完结撒花:

🌈本篇博客的内容【原来比C方便这么多 --缺省参数、函数重载、引用讲解】已经结束。

🌈若对你有些许帮助,可以点赞、关注、评论支持下博主,你的支持将是我前进路上最大的动力。

🌈若以上内容有任何问题,欢迎在评论区指出。若对以上内容有任何不解,都可私信评论询问。

🌈诸君,山顶见!文章来源地址https://www.toymoban.com/news/detail-435465.html

到了这里,关于【C++技能树】原来比C方便这么多 --缺省参数、函数重载、引用讲解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【C++初阶(二)】缺省参数&函数重载

    【C++初阶(二)】缺省参数&函数重载

    目录 前言 1. 缺省参数  1.1 什么是缺省参数  1.2 缺省参数的分类      1.2.1 全缺省参数  1.2.2 半缺省参数 2. 函数重载  2.1 什么是函数重载  2.2 缺省参数与函数重载  2.3 函数重载的使用  3. C++支持函数重载的原因  总结         在学习C语言时我们就会发现,C语言中存在的

    2024年02月07日
    浏览(13)
  • 【初识C++】(缺省参数和函数重载)

    【初识C++】(缺省参数和函数重载)

    缺省参数是在函数的声明中给定参数一个指定的值。 如果传参没有给定参数,那就按照声明中默认的缺省值,如果给定了参数,那就按照给定的参数值。 比如: 对于Func函数如果没有给定参数,那就按照默认的缺省值来赋值。如果给定了参数,那就按照给定的参数进行赋值。

    2024年02月01日
    浏览(10)
  • 【C++初阶】缺省参数与函数重载

    【C++初阶】缺省参数与函数重载

        C++祖师爷在用C写代码的时候,就觉得有些地方用着很不方便,于是就在C++设计了缺省参数,在实现一些功能时,用这个就方便了许多。 缺省参数是声明或定义函数时为 函数的参数指定一个缺省值 。在调用该函数时:             a.如果没有指定实参则采用该形参的缺省

    2023年04月22日
    浏览(14)
  • 【C++初阶】C++入门——缺省参数、函数重载

    【C++初阶】C++入门——缺省参数、函数重载

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

    2024年02月11日
    浏览(9)
  • 【C++杂货铺】缺省参数、函数重载

    【C++杂货铺】缺省参数、函数重载

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

    2024年02月16日
    浏览(11)
  • C++中命名空间、缺省参数、函数重载

    C++中命名空间、缺省参数、函数重载

    目录 1.命名空间 2.缺省参数 3.函数重载 在C++中定义命名空间我们需要用到namespace,后面跟上命名空间的名字,结构框架有点类似结构体(如图所示) 上面的代码我一一进行讲解: 1.我们先来说第三行和main函数中的代码意思,第三行代码的意思是展开std库的空间,std是

    2024年01月23日
    浏览(12)
  • 【C++】命名空间、缺省参数和函数重载

    在一个大型的项目中,不同成员写的程序中会不可避免的带来 命名冲突 的问题,这种情况下命名空间可以很好的解决这种命名冲突大的问题,它可以用来避免不同的库或模块中的名称(name)发生冲突。 名称可以是变量、函数、类、结构、枚举等等。此外,命名空间可以让我

    2024年02月17日
    浏览(12)
  • 【开懂C++】命名空间 函数重载 缺省参数

    【开懂C++】命名空间 函数重载 缺省参数

    在编写C语言代码时,当工程较大时,很容易产生变量命名冲突的情况——一般有两种冲突的情况 1.变量名与库中的函数名、冲突 。 2.工程模块化搭建时不同文件的命名冲突 。 而C++为了优化这一缺陷,提出了命名空间的概念。 命名空间使用的是 namespace ,命名空

    2023年04月18日
    浏览(11)
  • 【C++初阶(二)】缺省参数以及函数重载

    【C++初阶(二)】缺省参数以及函数重载

    💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C++初阶之路⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习排序知识   🔝🔝 写C语言代码的时候 特别是在写数据结构时: 经常忘记传函数的参数 或者当前不需要什么参数 C++增加了缺省参数来解决这个问题 而为了

    2024年02月12日
    浏览(11)
  • C++:命名空间,缺省参数,函数重载,引用,内联函数

    C++:命名空间,缺省参数,函数重载,引用,内联函数

    个人主页 : 个人主页 个人专栏 : 《数据结构》 《C语言》《C++》 本篇博客作为C++知识总结,我们来认识命名空间,缺省参数,函数重载,引用,内联函数。 那么在介绍命名空间时,我们先用C++的方式打印\\\"hello world\\\"。 其中,using namespace std; 就是一种命名空间的使用。 在

    2024年02月11日
    浏览(14)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包