gpt4 book ai didi

c++ - 隐式转换为用户定义类型

转载 作者:行者123 更新时间:2023-11-28 00:58:53 26 4
gpt4 key购买 nike

下面的代码工作正常。

class A
{
private:
int _value;
public:
class AProxy
{
public:
AProxy(int num):_num(num){}
int _num;
};
A(AProxy x):_value(x._num){}
int getvalue(){
return _value;
}
};

void func(A a)
{
cout<<"A is initialized with "<<a.getvalue()<<endl;
}

int main()
{
A a(10);
return 0;
}

a(10) 被转换为 a(Aproxy(10))

但是,下面的代码不起作用。

class A
{
private:
int _value;

public:
class AProxy
{
class AAProxy
{
public:
AAProxy(int num):_aanum(num){}
int _aanum;
};
public:
AProxy(AAProxy aa):_num(aa._aanum){}
int _num;
};
A(AProxy x):_value(x._num){}
int getvalue(){
return _value;
}
};

void func(A a)
{
cout<<"A is initialized with "<<a.getvalue()<<endl;
}

int main()
{
A a(10);
return 0;
}

a(10) -> a(Aproxy(AAproxy(10)))。所以从 int 到用户定义类型的隐式转换只发生一次?

最佳答案

它只寻找从类型 A(它是什么)到类型 B(它应该是什么)的直接转换。如果要这样做的话,从 A 到 C 到 B 的方法太多了,问题就变得无限大了;更不用说这样很快就会出现歧义。

关于c++ - 隐式转换为用户定义类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9775211/

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