C++ 将转换构造函数与运算符重载相结合
为什么i2没有隐式调用转换构造函数C++ 将转换构造函数与运算符重载相结合,c++,C++,为什么i2没有隐式调用转换构造函数 class NumString { public: NumString(const char* s) { } int operator*( int i) { return 42; } }; int main(void) { int i1 = (NumString) "string" * 2; //OK int
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
}
因为编译器没有调用用户定义的转换,因为没有任何用户定义的类型。 表达式字符串* 2只包含一个conchar和int,编译器为什么要考虑NUBING? 如果它像您期望的那样工作,那么如果多个类具有合适的转换构造函数,编译器将如何选择正确的转换呢