分享好友 最新动态首页 最新动态分类 切换频道
德州整站优化/seo技术分享博客
2024-12-29 07:42

C++中的引用类型属于复合类型compound type)。复合类型指的是基于其它类型定义的类型。

德州整站优化/seo技术分享博客

引用reference)为对象起了另外一个名字,引用类型引用refers to)另外一种类型。通过在变量名前添加“&”符号来定义。

引用必须用与该引用同类型的对象初始化。

 
 

定义了一个引用之后,对其进行的所有操作都是在与绑定的对象上进行的。


此时ival
的值变为
7

如果同一作用域的几个函数名字相同但形参列表不同,那么这些函数称为重载overloaded)函数。如



以上三个函数的函数名相同,但是形参列表不同。因此,这三个print() 函数是重载函数。

函数匹配funtion matching)是指一个过程,在这个过程中我们把函数调用与一组重载函数中的某一个关联起来。编译器首先将调用的实参与重载集合中每一个函数的形参进行比较,然后根据比较的结果决定到底调用哪个函数。例如

print(“hello world”);

编译器将调用print()函数的实参”hello world”与三个print()函数中的形参表进行比较,最终决定此时应该调用

void print(const char *cp);

函数。

在进行编译器进行函数匹配时,可能会遇到如下三种情况。

(1)编译器找到一个与实参最佳匹配的函数,并生成调用该函数的代码。

(2)找不到任何一个函数与调用的实参匹配,此时编译器发出无匹配的错误信息。

(3)有多于一个函数可以匹配,但是每一个都不是明显的最佳选择,此时也会发生错误,称为二义性调用。

2.1重载函数定义”中提到,重载函数的主要区别在于形参表的不同。在函数的形参表中,可以通过引用类型和非引用类型进行区分。

有如下两个函数


“1 
 引用”中提到,引用属于复合类型,因此
int

int
的引用属于两种不同的类型,即这两个
func()
函数的形参列表不同,所以这两个函数是重载函数。

使用以下代码来调用void func(int param);函数

此时,编译器的错误提示信息为

错误,有多个重载函数func”实例与参数列表匹配

函数“func(int)”

函数func(int&)

参数类型为(int)

1.2 引用使用”中提到,对引用对象的操作是在与其绑定的对象上进行的。因为,引用是其绑定对象的另一个名字,以下两种调用方式中


编译器无法区别实参value
或者
refvalue
到底是
int
类型还是
int
类型的引用。这就是在“
2.2.2 
调用重载函数可能遇到的情况”中提到的二义性调用。

1)调用func(int)函数

如果想调用func(int)函数,可以将其实参设置为整数常量,例如

const int value = 1;

func(value);

或者

func(1);

2)调用func(int&)函数

如果想调用func(int&)函数,则需要通过显示转换操作符static_cast将函数进行转换

static_cast<void(*)(int&)>(func)(refvalue);

相关链接static_cast强制类型转换符号的格式为

static_cast<type>(expression)

其中type为要强制转换后的类型,而expression是要被强制转换的表达式。例如


以上代码的的功能是将void*
类型的变量
p
强制转换为
double*
类型。

所以



代码的功能就是将函数调用代码func(refvalue) 强制转换为 void(*)(int&) 格式,即调用了 func(int&)

使用static_cast强制转换符也可以调用func(int)



有如下两个函数


那么这两个func()
函数是重载函数。

采用以下代码调用这两个重载函数

其中,func(refvalue);
调用的是func(int&)
函数;而func(refvalue_const);
调用的是func(const int&)
函数。

“3.2 常量引用与非常量引用参数”中提到的常量引用和非常量引用指的是引用所代表的变量是常量还是变量;而本节提到到引用常量和引用非常量值得是引用本身是常量还是变量。

以上两个函数的形参即为引用非常量和引用常量。需要注意的是,形参列表不能通过引用常量和引用非常量进行区分,即以上两个函数是同一个函数的声明。此时,编译器会报如下错误

error C2084: “void func(int &)”已有主体

最新文章
济南屋顶漏水维修电话〈免费上门〉济南屋顶防水补漏师傅
不砸砖、不砸墙;免砸砖防水补漏技术,2小时快速解决漏水问题,超长保修期。漏水维修服务项目:厨房间漏水、厂房天面渗水、洗手间渗水、漏水检测维修、高压注浆堵漏、防水堵漏、屋顶渗水、墙面发霉、地下室渗水、厂房车间渗水、外墙渗水、屋面
超值推荐!12月第2周韶关人气楼盘榜单,揭晓备受追捧的热门楼盘!
12月第2周(12.9-12.15)韶关热搜楼盘排名出炉。据房天下研究院搜索排名显示,12月第2周(12.9-12.15)韶关的热搜楼盘榜单中排名第一的是沙湖绿洲,排名第二、第三的是外滩华府、状元府邸·尚苑,目前价格分别为6400元/平方米、6600元/平方
江渔儿酸菜鱼加盟 江渔儿酸菜鱼加盟费多少 怎么样 连锁条件
  “吃”在我们生活中是不可或缺的一部分,好吃营养,方便快捷的食物一直是众多爱好美食的人的知音。在众多餐饮行业中,酸菜鱼一直受到人们的喜爱,无论老人小孩都适宜,可谓是真正的“国民度”美食。成都江渔儿酸菜鱼浓郁高汤,醇厚口感
用AI生成超逼真美女写真,全面评测五大热门工具
Artbreeder:这是一个结合了用户创造与AI生成的社交平台。用户可以通过调整各类参数来生成自己心目中的美女形象,极富创意。但由于生成过程较为依赖用户的具体设定,部分用户可能会在细节捕捉上感到困惑。DeepAI:一款适合新手的AI绘图工具
遇到复制不了的文献资料怎么破?这次教你四种方法
在平时,我们都知道,使用百度文库或者360个人图书馆时,因为这些文库都需要会员,我们很难进行全文的下载,这一点对我们来说很不方便。很多读者会选择直接对文字进行复制粘贴,但是这些网页却无法进行复制,比如百度文库会直接弹出,需要V
苹果被曝开发搜索引擎 谷歌百亿美元合作费恐被叫停
据英国媒体报道,苹果可能正在开发iPhone设备中的搜索引擎技术,从而将挑战目前谷歌在全球搜索引擎中的垄断地位。谷歌当前正在遭遇欧美政府更加严厉的反垄断起诉。美国司法部的报告数据称,谷歌每年向苹果支付80亿美元至120亿美元的费用,
房屋征收事务所是干什么的?一文带你了解相关法规
  房屋征收事务所是什么?房屋征收事务所,是受房屋征收部门委托,承担房屋征收与补偿的具体工作的非营利单位。依据《国有土地上房屋征收与补偿条例》第五条 房屋征收部门可以委托房屋征收实施单位,承担房屋征收与补偿的具体工作。房屋
微信推文中可以直接导入WORD吗?有AI排版工具吗?
如果能将word文档快速、高效地转化为引人入胜的微信推文,往往能简化工作流程,满足用户高效产出推文的需求。然而,传统的复制粘贴方式经常伴随着格式错乱、排版繁琐的困扰,为用户增加了大量无效且重复的工作内容。作为一款专业,壹伴助手
九联科技启航AI新时代,覆盖家庭与工业的未来趋势
在科技飞速发展的今天,九联科技正以其人工智能产品在多个领域中崭露头角。金融界的最新消息显示,该公司展现了丰富的人工智能应用,包括九联边缘计算小站、鸿蒙AI算力开发板(UnionpiTiger、UnionpiWhale)、智能高清网络摄像头
相关文章
推荐文章
发表评论
0评