|
1
8
它本身并不是UB。当您丢弃constness并使用获得的glvalue修改最初声明为const的对象时,会得到未定义的行为。这是这个的标准报价( [dcl.type.cv]/4 ):
仅仅调用成员函数并不是对对象的修改。这完全取决于功能 做 . 所以如果它做了一些疯狂的事情,比如:
这肯定会导致未定义的行为。但假设没有,既然有 无成员 如果要以格式错误的方式进行修改,则调用中没有UB。 另一个问题,即这是否是一个好主意,有一个明显的答案。Const cast不应丢弃代码基。但是,如果基类表现良好,尽管定义不好,但如果您不能更改该类,那么它可能是可以接受的。 |