以下代码可编译。看起来运行良好。
但这会导致任何未定义的行为吗?
我想抛弃 const*this
.
这是为了允许const my_iterator
改变它指向的数据。
Test:
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);
}
你的例子不是未定义的行为,因为a
is not const
。然而,如果a
were const
, 这将是:
int main() {
const A a(10);
a.set_x2(100);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)