一、const_cast用法
const_cast < new-type > ( expression );
用于转换指针或引用,可以去掉类型的const属性。
在c++参考文档网站上(const_cast conversion - cppreference.com)有这么一个例子:
#include <iostream>
struct type
{
int i;
type(): i(3) {}
void f(int v) const
{
// this->i = v; //直接赋值,会编译报错;因为const成员函数,意味着该函数内不能改变当前类成员的值
const_cast<type*>(this)->i = v; // 只要type对象不是 const 就可以对类成员进行改值了
}
};
int main()
{
int i = 3; // i is not declared const
const int& rci = i;
const_cast<int&>(rci) = 4; // OK: modifies i
std::cout << "i = " << i << '\n';
type t;//如果声明为const type t, 那么下一个语句t.f(4),就是一个未定义的行为,所以不要加con