c语言const 转为非const的问题
2015-08-12 18:47
330 查看
昨天碰到一个奇葩的问题。
我定义的数据结构
然后我用priorityqueue< tree>载入进去。但是这个类的top()函数出来的东西是const类型的。会出现这种问题
![](http://img.blog.csdn.net/20150812184222595)
所以这里涉及到了const转为非const的问题。
一个毁三观的代码是这样的
把const直接强转没了。但是这样虽然编译通过但是在实际中随意丢弃const会有问题。当如果本身的变量不是const类型。后期加上了const,也就是我这种情况来说这样转换没有问题。而对于本身就是const变量的话如果这么转换会有未定义的效果出现。我做了一个实验,结果三观都没了。
![](http://img.blog.csdn.net/20150812184605196)
看见了没?一个地址有两个值。。。估计是编译器有啥优化吧。。反正c语言是古老的魔法,你可以天马星空,但是死也快。。
我定义的数据结构
struct tree { tree* left; tree* right; }
然后我用priorityqueue< tree>载入进去。但是这个类的top()函数出来的东西是const类型的。会出现这种问题
所以这里涉及到了const转为非const的问题。
一个毁三观的代码是这样的
tree aNewTreeNode; aNewTreeNode.value=2; aNewTreeNode.left=(tree*)&myQueue.top();
把const直接强转没了。但是这样虽然编译通过但是在实际中随意丢弃const会有问题。当如果本身的变量不是const类型。后期加上了const,也就是我这种情况来说这样转换没有问题。而对于本身就是const变量的话如果这么转换会有未定义的效果出现。我做了一个实验,结果三观都没了。
看见了没?一个地址有两个值。。。估计是编译器有啥优化吧。。反正c语言是古老的魔法,你可以天马星空,但是死也快。。
相关文章推荐
- C++ 对象指针
- C++学习笔记26,虚函数
- C++笔试总结-面试笔试常考题型(一)指针-引用-宏定义-sizeof
- C++对象模型——"无继承"情况下的对象构造(第五章)
- C++对象模型——构造,解构,拷贝语意学(第五章)
- C++易混淆的一点
- 希尔排序(C++版)
- C++文件读取
- C++ sizeof 与 strlen 小结
- HDFS简介及用C语言访问HDFS接口操作实践
- C++ 之 std::nothrow
- 值得推荐的C/C++框架和库 (真的很强大)
- leetcode Valid Palindrome C++&python 题解
- libsvm工具箱C++编程实践2
- C++类内存分布
- c++ 操作 xlsx
- [LeetCode] Triangle
- c语言函数指针的理解与使用
- C++ 内存对齐
- c/c++中const使用总结(金典)