引擎盖下没有任何事情发生.const是严格编译时实体.编译器仅使用知识const来判断语句是否是错误而不是用于生成代码.因此如下:
int i = 1;
const int *b = &i;
Run Code Online (Sandbox Code Playgroud)
相当于
int i = 1;
int *b = &i;
Run Code Online (Sandbox Code Playgroud)
就生成的代码而言.但是,如果您执行以下操作:
int i = 1;
const int *b = &i;
*b = 1;
Run Code Online (Sandbox Code Playgroud)
编译器会注意到b有const(虽然它什么都不知道的i),并会出错误.但是,任何不被视为添加const的错误的语句都将生成具有或不具有const的相同代码.