Aconst_cast
用于删除或添加对象的“常量”。
但是,这种演员的效果或行为是什么,不会改变“const-ness”?
换句话说,如果const_cast<Class&>(object)
应用于object
已经是非常量Class
类型的对象会发生什么。
同样,如果const_cast<const Class&>(object)
应用于object
已经是const Class
类型的 ,会发生什么。
虽然我觉得应该很好定义,但还是想确认一下。特别是如果标准中有任何权威参考或某些内容。
用例:在模板代码中,有时为了避免额外的代码,我们可能希望const_cast
每个对象都出现。它可以与对象一起传递,也可以不与const
对象一起传递const
。例如
struct X {
void foo ();
};
template<typename T>
void call_foo (T& t) // `T` is either `X` or `const X` (& possibly children of `X`)
{
X& x = const_cast<X&>(t);
x.foo();
}
假设,暂时我们不担心说明volatile
符。