//Example 1
const double pie = 3.14; //const object
const double *cptr = &pie; //pointer-to-const to const object
double *ptr = &pie; //ERROR - non-pointer-to-const to const object
//Example 2
double pie = 3.14; //non-const object
const double *cptr = &pie; //non-pointer-to-const to non-const object
double *ptr = &pie; //non-pointer-to-const to non-const object
最初我虽然允许指向非const对象的指针,因为它只是意味着指向const的指针不会改变非const对象.
但我只是在c ++书中读到,指向const到非const对象的原因是允许的,因为指针到const指针无法真正知道它指向的对象是否为const,所以它对待对象它指向const但是通过相同的逻辑,非指针指向const会将const对象视为非const对象,但编译器将在编译时抛出错误.
我在这里错过了什么吗?
char* foo = "fpp"; //compile in vs 2010 with no problem
Run Code Online (Sandbox Code Playgroud)
我虽然字符串文字是const char*类型.
并且const类型不能分配给非const类型.
所以我希望上面的代码失败或者我错过了什么?
编辑:对不起伙计们,我完全忘记编译器也会发出警告.
我一直在查看错误列表.
我忘了检查一下.
Edit2:我将我的项目警告级别设置为EnableAllWarnings(/ Wall),并且没有任何关于此的警告.
所以我的问题仍然有效.