gpt4 book ai didi

C++,如何确定隐式转换/构造函数?

转载 作者:搜寻专家 更新时间:2023-10-31 00:23:09 25 4
gpt4 key购买 nike

C++ 如何确定几层深度对象的隐式转换/构造?例如:

struct A {};
struct B: A {};
struct C { operator B() { return B(); } };

void f(A a) {}

int main(void)
{
f(C());
}

它是否创建所有可能转换的树并选择合适的终端?还有别的吗?谢谢

最佳答案

调用 f() 需要两次转换,一次是用户定义的转换(CB),一次是内置的转换(派生到基础:BA)。当需要零个或一个用户定义的转换时,使用不匹配参数的调用会成功。如果不同的转换(内置或用户定义的)会成功,那么,如果所有可能的方式在它们需要的转换数量/种类上都相等,则调用是不明确的,编译器需要发出诊断。

标准未指定编译器如何实现这一点。

关于C++,如何确定隐式转换/构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2443479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com