"hello world"字符串文字可以分配给char*类型吗?

kyp*_*ite 4 c++ string const

char* foo = "fpp"; //compile in vs 2010 with no problem
Run Code Online (Sandbox Code Playgroud)

我虽然字符串文字是const char*类型.
并且const类型不能分配给非const类型.
所以我希望上面的代码失败或者我错过了什么?

编辑:对不起伙计们,我完全忘记编译器也会发出警告.
我一直在查看错误列表.
我忘了检查一下.

Edit2:我将我的项目警告级别设置为EnableAllWarnings(/ Wall),并且没有任何关于此的警告.
所以我的问题仍然有效.

Alo*_*ave 6

C++ 03弃用[Ref 1]使用不带const关键字的字符串文字.

[参考1] C++ 03标准:§4.2/ 2

不是宽字符串文字的字符串文字(2.13.4)可以转换为"指向字符的指针"的右值; 可以将宽字符串文字转换为"指向wchar_t的指针"类型的右值.在任何一种情况下,结果都是指向数组第一个元素的指针.仅当存在明确的适当指针目标类型时才考虑此转换,而不是在通常需要从左值转换为右值时.[ 注意:此转换已弃用.见附录D.]为了在重载决策(13.3.3.1.1)中进行排序,这种转换被认为是一个数组到指针的转换,然后是一个限定转换(4.4).[示例:"abc"转换为"指向const char的指针"作为数组到指针的转换,然后转换为"指向char的指针"作为限定转换.]

C++ 11简单地删除了上面的引用,这意味着它是C++ 11中的非法代码.

在C++ 03之前,C++在没有const关键字的情况下派生了字符串文字的声明,请注意,在C语言中它完全有效.