C++ 将转换构造函数与运算符重载相结合

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

为什么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
}

因为编译器没有调用用户定义的转换,因为没有任何用户定义的类型。

表达式字符串* 2只包含一个conchar和int,编译器为什么要考虑NUBING? 如果它像您期望的那样工作,那么如果多个类具有合适的转换构造函数,编译器将如何选择正确的转换呢