|
1
8
它本身并不是UB。当您丢弃constness并使用获得的glvalue修改最初声明为const的对象时,会得到未定义的行为。这是这个的标准报价( [dcl.type.cv]/4 ):
仅仅调用成员函数并不是对对象的修改。这完全取决于功能 做 . 所以如果它做了一些疯狂的事情,比如:
这肯定会导致未定义的行为。但假设没有,既然有 无成员 如果要以格式错误的方式进行修改,则调用中没有UB。 另一个问题,即这是否是一个好主意,有一个明显的答案。Const cast不应丢弃代码基。但是,如果基类表现良好,尽管定义不好,但如果您不能更改该类,那么它可能是可以接受的。 |
|
Paul J. Lucas · _C中任意大小的原子结构体赋值? 1 年前 |
|
|
nore · 为什么C标准禁止在源文件末尾使用部分预处理令牌? 2 年前 |
|
Gene · 是否允许使用受约束的别名模板? 2 年前 |
|
|
yg-i · C的“基本执行字符集”中的字符总数究竟是多少? 2 年前 |