char* foo = "fpp"; //compile in vs 2010 with no problem
Run Code Online (Sandbox Code Playgroud)
我虽然字符串文字是const char*类型.
并且const类型不能分配给非const类型.
所以我希望上面的代码失败或者我错过了什么?
编辑:对不起伙计们,我完全忘记编译器也会发出警告.
我一直在查看错误列表.
我忘了检查一下.
Edit2:我将我的项目警告级别设置为EnableAllWarnings(/ Wall),并且没有任何关于此的警告.
所以我的问题仍然有效.
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语言中它完全有效.
| 归档时间: |
|
| 查看次数: |
4098 次 |
| 最近记录: |