转换
char* p = "foobar";
在C++98/C++03中,"abc"
字符串字面值可以被转换为指向char
类型的右值指针;而宽字符串字面值则可以被转换为指向wchar_t
类型的右值指针。无论哪种情况,结果都是指向数组第一个元素的指针。当有显式的适当指针目标类型时才考虑此转换,而不是一般需要从左值转换为右值。该转换已被弃用,在C++0x中已被删除(即§4.2/2已被删除)。
因此,在C++0x中,这段代码无效。
然而,MinGW g ++ 4.4.1仍只发出警告,而不是错误。
char*
转换的,我想?如果可能的话,能否引用C++03标准中的该段落将会很酷 :) - fredoverflowchar* p = "abc"; // legal in C, illegal in C++
。更改的基本原理是:这可以避免调用不适当的重载函数,该函数可能希望能够修改其参数。 - David Rodríguez - dribeas
const char*
。 - Marius Bancila