为什么此处CL
实例转换为const int&
不明确?
struct CL
{
operator const int&()
{
}
operator int&()
{
}
};
void fnc(const int&)
{
}
int main()
{
CL cl;
fnc(cl);
}
有两种方式:
1)。 cl.operator const int&()
会导致用户定义的转化
2)。 cl.operator int&()
会导致用户定义的转化,然后是资格转换(int&
到const int&
)
第一种方式比第二种方式更好,不是吗?我看到标准,但什么也没找到。
答案 0 :(得分:5)
这是因为在这种情况下,两种转换都适用(同样好)。也就是说,int&
和const int&
都可以由const int&
绑定。
如果你有:
,那么转换就不会有歧义void fnc(int&)
{
}