Why different behavior for “TYPE* const” pointers?
Below code is dealing with a TYPE* const pointer. struct D { void Check () { D* const p = new D; // 2nd test is "p = 0;" cout<<"p = "<<p<<endl; (D*&)p = new D; cout<<"p = "<<p<<endl; // prints 0, "p = 0;" at declaration } }; int main () { D o; o.Check(); } My questions are, If you initialize with 0 , then even though typecasting next time will not work. Is doing such typecasting is undefined behavior ? this pointer is also of TYPE* const type, then why compiler doesn't allow the same operation for this ? As others have said, this is undefined behaviour since it attempts to modify a const