C++ 的 const和const_cast
来源:互联网 发布:手机淘宝关注是收藏吗 编辑:程序博客网 时间:2024/05/02 02:53
***************************************转载请注明出处:http://blog.csdn.net/lttree********************************************
今天,逛了逛 问答社区,
在C++ 里,看到有人问关于 const_cast 的东西,
正好在 <<Effective C++>> 中,也讲到过这方面的东西。
翻了翻书,上网搜了搜,
发现还挺好玩....
题主问的是如何将一个设定为 const 的 double 类型数组 在运行期间 对它再解除const,然后改动数组内容。
> 首先,明确一下,
对于 const_cast
这个东西,只是对于指针 和 引用 解const,对于变量,就会出现问题。
比如,看下面这段代码:
const int a=789 ;int &b = const_cast<int&>(a);int *c = const_cast<int*>(&a);cout<<"a="<<a<<endl;cout<<"&b="<<b<<endl;cout<<"*c="<<*c<<endl;cout << "&a="<<&a<<endl;cout << "&b="<<&b<<endl;cout << "c="<<c<<endl;cout<<endl;b = 987;*c = 999;cout << "a="<<a<<endl;cout << "b="<<b<<endl;cout << "*c="<<*c<<endl;cout << "&a="<<&a<<endl;cout << "&b="<<&b<<endl;cout << "c="<<c<<endl;
运行一下:
很好玩吧~。~
> 然后,对于这个问题,
因为是数组,数组属于指针的范畴了,
我就试着写了写,
发现,
通过一个中间变量,还是可以改动原来的const的内容的:
const double arr[3] = {1.2,3.3,4.5};int i;for(i=0;i<3;++i)cout<<arr[i]<<" ";cout<<endl;double& temp = const_cast<double&>(arr[0]);for(i=0;i<3;++i)cout<<arr[i]<<" ";cout<<endl;cout<<temp<<endl;cout<<arr[0]<<endl;cout<<&temp<<endl;cout<<&arr[0]<<endl;
结果还是可以的
OK,就是这样,
挺有意思的东东~。~
***************************************转载请注明出处:http://blog.csdn.net/lttree********************************************
0 0
- C++ 的 const和const_cast
- 关于const_cast 和 修改const 的值
- const const_cast
- static_cast、dynamic_cast、reinterpret_cast和const_cast之间的区别,char int *p,int const*p
- C的const和volatile
- C和C++的const
- [C/C++] const和#define的区别
- c++中的const/const_cast
- c++中的const/const_cast
- const_cast(脱const)
- C/C++: C++ 中 const_cast 的含义
- C++ this与const,const_cast,static_cast的关系
- C++中的const函数与const_cast的矛盾
- C++里面的const和c语言里面的const
- C语言的const和CPlusPlus的const
- c语言const和c++的const的区别
- c中const和c++中const的学习总结
- [C++]const指针和指向const的指针
- python 使用 simplejson 将字符串转换成字典dict
- intellij idea忽略部分类编译错误 (Eclipse-like incremental compilation )
- java网络编程
- 表字段的定义,null还是not null?
- 计算机网络之数据包的传递过程解析
- C++ 的 const和const_cast
- 指针和引用有什么区别
- js文件的编码问题
- Android中的简单图像处理
- ZOJ 3879 — Capture the Flag
- git学习(分支管理)
- Subsets II -- leetcode
- Sicily 14181. Flying Safely
- [Play Framework]Body parsers——请求主体解析器