Sam*_*ime 0 c++ const undefined-behavior
鉴于以下C++代码:
#include <iostream>
int main()
{
const int i = 1;
*const_cast<int*>(&i) = 1; // Not allowed but doesn't do anything?
std::cout << i << "\n";
}
Run Code Online (Sandbox Code Playgroud)
问题:上面的代码是否调用UB(未定义的行为)?我知道抛弃const并为i
UB中的结果赋值,因为我们不允许更改const变量的值.但是,在上面的代码中,我实际上没有更改 - 的值i
- 那么,这仍然是UB吗?
是.它仍然是UB.
尝试更改const变量是UB,而不仅仅是分配新值.
从N4296,第1.9节,第4段:
本国际标准中将某些其他操作描述为未定义(例如,尝试修改
const
对象的效果).
归档时间: |
|
查看次数: |
77 次 |
最近记录: |