不,这是不可能的,至少在 C++ 中是不可能的。您需要mutable
或非const
功能。
还有const_cast
不要用它来修改东西。如果您修改const_cast
edconst
值,您会得到未定义的行为。
5.2.11 常量转换
7 [注意:根据对象的类型,通过指针、左值或指向数据成员的指针的写操作由丢弃 const-qualifier73 的 const_cast 产生,可能会产生未定义的行为(7.1.6.1)。——尾注]
7.1.6.1 cv 限定符
4 除了可以修改任何声明为可变的类成员(7.1.1)外,任何在其生命周期内修改 const 对象的尝试(3.8)都会导致未定义的行为。
....
5 再举一个例子
struct X {
mutable int i;
int j;
};
struct Y {
X x;
Y();
};
const Y y;
y.x.i++; // well-formed: mutable member can be modified
y.x.j++; // ill-formed: const-qualified member modified
Y* p = const_cast<Y*>(&y); // cast away const-ness of y
p->x.i = 99; // well-formed: mutable member can be modified
p->x.j = 99; // undefined: modifies a const member
—end example ]