char x[10] = "banana";
被认为是从const char[7]
到char[10]
的隐式转换吗?
由于std::is_convertible<const char[7], char[10]>::value
的值为false
,显然答案是否定的。但是我找不到隐式转换的明确定义。阅读cppreference后,我认为原因是:
虽然我不确定为什么他们没有将显式构造函数从这种情况中排除。只要在不接受类型T1的上下文中使用该类型的表达式T1,而接受某些其他类型T2时,就会执行隐式转换;特别地:...当初始化类型为T2的新对象时,包括在返回T2的函数语句中;
后续问题(可能没用): 数组是完全排除在任何类型转换之外(即数组转换为数组)吗?
char x[10] = {'b', 'a', 'n', 'a', 'n', 'a', '\0' };
,其余三个字符会被隐式初始化为'\0'
。 - Eljay