以下代码编译。它似乎运行良好。
但它会导致任何未定义的行为吗?
我想抛弃*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);
}
答案 0 :(得分:6)
我会说你的例子不是未定义的行为。但是,如果a
为const
,则为:
int main() {
const A a(10);
a.set_x2(100);
}