初识C++||Day02:函数重载和引用

Day01——问题:

quest1:

下列代码运行结果是什么?

answer:结果输出2,namespace中的函数会向namespace域中查找i,而无法向其他区域查找,其他区域定义的i会在其区域将namespace中的i覆盖

一、函数重载

多个在同一作用域下的具有不同的参数列表的同名函数

不同的参数列表:参数个数或参数顺序或参数类型不同

特殊:参数列表不同,但内含缺省函数,使调用时可能会引起歧义的,也算函数重载

C语言不支持函数重载,而C++支持函数重载的原理

  • C语言在编译时,对调用的函数名会进行修饰,不会因为函数的参数列表不同而修饰不同
  • C++在编译时,对调用的函数名会根据其参数列表的不同,而进行不同的修饰,但返回类型不同不会使之不同,所以函数的返回类型不同不会引起函数重载

二、引用&

含义:给变量取别名,与原变量共用一块空间

用法:type& name1 =name2;

作用:

  1. 函数传参
  2. 作为函数返回值

特殊

  • 权限改变应该注意到,引用可能引发的权限改变,上图所示的用法会引起权限的扩大,由只读变为可读可写,无法引用成功;其中引用引起的权限的平移或缩小,都可以正常使用。
  • 引用表达式

  • 不同类型间的引用

表达式的返回时和变量在类型转换时会产生具有常属性的临时变量,引用时,权限同样会发生扩大,应该使用const修饰

区分:const type* p1和int const*p1,前者的const修饰p1指向的内容,后者的修饰p1本身的值。

注意

  • 引用在定义时必须进行初始化
  • 一个变量可以有多个引用
  • 引用只可以作为一个变量的别名
  • 指针和引用在底层的实现是一样的,但语法上认为引用不会开辟空间

问题:

  1. 引用可以完全代替指针吗?
  2. 请指出下列代码存在的所有问题:
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值