C++中修改常量值的方法
2016-09-23 00:06
267 查看
1.无法对全局常量,静态常量重新赋值,会引发编译错误或者运行时错误
2.对函数内的局部常量可以重新赋值,但是并不会改变值,只是不会报错,所以没什么卵用
3.可以对类中的成员常量进行重新赋值,主要的方法就是通过获取原常量的底层常量指针,使用强制类型转换,将常量指针改变成非常量指针,然后通过非常量指针进行赋值。例子如下
class AClass{ private: const int x; int *const array; public: AClass(int n):array(new int ),x(n){} void changeConst(int m){ *(int *)&x=m; *(const_cast<int *>(&x))=m; //*(static_cast<int *>(&x))=m;这个是不行的,因为static_cast无法修改底层const,上面两个都行; if(array) delete [] array; *(int **)&array=new int[m]; } }
相关文章推荐
- C/C++定义全局变量/常量几种方法的区别
- 在C++中定义常量的两种方法的比较
- C/C++定义全局变量/常量几种方法的区别
- 3Java程序JNI调用C++之修改属性调用方法
- 定义C/C++全局变量/常量几种方法的区别
- C/C++定义全局变量/常量几种方法的区别
- 定义C/C++全局变量/常量几种方法的区别
- C/C++修改常量的值
- 定义C/C++全局变量/常量几种方法的区别
- 【C/C++】(转)定义C/C++全局变量/常量几种方法的区别
- 定义C/C++全局变量/常量几种方法的区别
- "getline" bug fix for Microsoft Visual C++ 6.0 关于VC6的getline输入需要两个回车才结束的BUG修改方法
- C/C++定义全局变量/常量几种方法的区别
- C/C++定义全局变量/常量几种方法的区别
- 修改const常量的方法
- 在C++中定义常量的两种方法的比较
- 定义C/C++全局变量/常量几种方法的区别
- 定义c/c++全局变量/常量几种方法的区别
- 【转】C++各类文档修改标题方法
- C/C++定义全局变量/常量几种方法的区别