首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当每个用户定义的转换方法被称为隐式时,规则是什么?

当每个用户定义的转换方法被称为隐式时,规则是什么?
EN

Stack Overflow用户
提问于 2020-05-27 19:23:48
回答 1查看 32关注 0票数 0

一个小小的背景。

在类的世界中,隐式转换可以通过三个成员函数来控制: 单参数构造函数:允许从特定类型隐式转换来初始化对象。赋值运算符:允许在赋值时从特定类型隐式转换。类型转换操作符:允许隐式转换到特定类型。

我想知道这些不同的隐式转换是如何相互作用的。什么时候一个凌驾于其他人之上?规则是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-27 19:39:39

其中之一,赋值运算符,不实现转换。您只需根据来自另一个类型的对象的数据修改一种类型的对象的状态。

什么时候一个凌驾于其他人之上?

当一个人是一个更好的匹配过载决议。例如,如果源对象是非const,而转换构造函数具有非const参数,而转换运算符是const限定的,则转换构造函数是更好的匹配,因为身份转换排序高于const转换。

如果不同的转换是模棱两可的,即对于过载解析两者都不是一个更好的匹配,那么程序就是错误的。一般来说,没有必要有冲突的转换,它们应该避免。要么使用转换构造函数,要么使用转换运算符;而不是两者都使用。

过载解析规则载于标准的over.match部分。这是一个相当长的部分,我不会在这里复制它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62051249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档