1 #include <iostream> 2 using namespace std; 3 class B 4 { 5 public: 6 B() { } 7 public: 8 int m_iNum; 9 }; 10 void foo() 11 { 12 const B b1; 13 //b1.m_iNum = 100; //compile error 14 //上面注释掉的代码编译时会报错,因为b1是一个常量对象,不能对它进行改变; 15 // 可以做如下转换,体现出转换为指针类型 16 B *b2 = const_cast<B*>(&b1); 17 // 或者左侧也可以用引用类型,如果对b2或b3的数据成员做改变,就是对b1的值在做改变 18 B &b3 = const_cast<B&>(b1); 19 b2->m_iNum = 200; //fine 20 b3.m_iNum = 300; //fine 21 cout << b1.m_iNum << endl; 22 //使用const_cast可以返回一个指向非常量的指针(或引用)指向b1,就可以通过该指针(或引用)对它的数据成员任意改变。 23 24 } 25 int main( int argc, char * argv[] ) 26 { 27 foo(); 28 return 0; 29 }