小编Tuf*_*der的帖子

是否将指针转换为const指针并转换回未定义的原始类型?

我知道将const指针转换为非const类型可能是未定义的行为,但是如果该指针最初不是const怎么办?

int i = 0;
int * pi = &i;
const int * const_pi = const_cast<const int*>(pi);
int * non_const_pi = const_cast<int*>(const_pi);
*non_const_pi = 0;
*non_const_pi = 1;
int j = *non_const_pi;
Run Code Online (Sandbox Code Playgroud)

有没有未定义的行为?如果有的话,它们在哪里发生?编译器可以假定它non_const_pi是从const指针强制转换的,并且不执行任何修改吗?

c++ const-cast undefined-behavior language-lawyer

1
推荐指数
2
解决办法
90
查看次数