C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 这个用户定义的转换是不是模糊不清?如果是这样,什么规则允许呢?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_772_0@
@H_772_0@

然而,以下compiles just fine in GCC和Clang主干:

struct B;
struct A
{
    A();
    operator B();
};

struct B
{
    B(const A&);
};

int main()
{
    A a;
    (B)a;
}

我错过了什么?

解决方法

在这种情况下,演员表示法(B)a等同于static_cast< B>(a)(§5.4/ 4).这又与初始化B t(a)具有相同的语义,其中t是临时的(§5.2.9/ 4).由于B具有类类型,并且初始化是直接初始化,因此只虑B的构造函数(§8.5/ 16).适用的构造函数是:

>转换构造函数B :: B(const A&)
>隐式定义的复制构造函数B :: B(const B&)
>隐式定义的移动构造函数B :: B(B&&)

由于从A到const A& A的隐式转换,转换构造函数赢得了重载决策.是一个完全匹配.

@H_772_0@

大佬总结

以上是大佬教程为你收集整理的c – 这个用户定义的转换是不是模糊不清?如果是这样,什么规则允许呢?全部内容,希望文章能够帮你解决c – 这个用户定义的转换是不是模糊不清?如果是这样,什么规则允许呢?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:c什么允许如果是不是模糊不清用户定义规则转换这个这样
猜你在找的C&C++相关文章
其他相关热搜词更多
phpJavaPython程序员load如何string使用参数jquery开发安装listlinuxiosandroid工具javascriptcap