博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c语言const 转为非const的问题
阅读量:2341 次
发布时间:2019-05-10

本文共 456 字,大约阅读时间需要 1 分钟。

昨天碰到一个奇葩的问题。

我定义的数据结构

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语言是古老的魔法,你可以天马星空,但是死也快。。

你可能感兴趣的文章
删除可能不存在的文件的大多数pythonic方式
查看>>
如何在Eclipse中为Java文本编辑器更改字体大小?
查看>>
我们应该@Override接口的方法实现吗?
查看>>
ng-repeat定义次数而不是重复数组?
查看>>
选择语句以查找某些字段的重复项
查看>>
引导程序中“col-md-4”,“col-xs-1”,“col-lg-2”中数字的含义
查看>>
JavaScript ES6类中的私有属性
查看>>
List vs tuple,何时使用? [重复]
查看>>
默认情况下,如何以管理员身份运行Visual Studio?
查看>>
通过varargs参数可能导致堆污染
查看>>
Git学习笔记1 神奇的git stash
查看>>
Unable to locate package错误解决办法
查看>>
关于service中添加Transaction注解后,service无法注入bean
查看>>
linux shell 自定义函数(定义、返回值、变量作用域)介绍
查看>>
写自己的ASP.NET MVC框架(上)
查看>>
C++和C在linux下编程和与在WINDOWS下有什么区别
查看>>
CSS 的优先级机制[总结]
查看>>
linux shell 数组建立及使用技巧
查看>>
IEnumerator 协程 全称协同程序
查看>>
java实现冒泡排序
查看>>