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

时间:2018-05-03 21:15:40

标签: c++ const undefined-behavior

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

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

我想抛弃*this的常量。

这是为了允许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);
}

1 个答案:

答案 0 :(得分:6)

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

int main() {
    const A a(10);
    a.set_x2(100);
}