抛弃了这个导致未定义行为的const?

R z*_* zu 2 c++ const undefined-behavior

以下代码编译.它似乎运行良好.

但它会导致任何未定义的行为吗?

我想抛弃常数*this.

这是为了允许a const my_iterator改变它指向的数据.

测试:

class A {
public:
    A(const int x) : x_(x) {}
    void set_x(int x) { x_ = x; }
    void set_x2(const int x) const {
        const_cast<A&>(*this).set_x(x);
    }
    int x_;
};

int main() {
    A a(10);
    a.set_x2(100);
}
Run Code Online (Sandbox Code Playgroud)

Fre*_*son 6

我会说你的例子不是未定义的行为.但是,如果aconst,那将是:

int main() {
    const A a(10);
    a.set_x2(100);
}
Run Code Online (Sandbox Code Playgroud)

  • 这是所述问题的正确答案,但我很确定OP不应该问自己的问题. (4认同)