为什么不为i2隐式调用转换构造函数?
class NumString
{
public:
NumString(const char* s)
{
}
int operator*( int i)
{
return 42;
}
};
int main(void)
{
int i1 = (NumString) "string" * 2; //OK
int i2 = "string" * 2; //ERROR
}
Run Code Online (Sandbox Code Playgroud)
表达式"string" * 2只涉及a const char *和a int,编译器为什么要NumString以任何方式考虑?
如果它像您期望的那样工作,如果多个类具有合适的转换构造函数,编译器将如何选择正确的转换?