您的位置:首页 > 编程语言 > C语言/C++

c语言const 转为非const的问题

2015-08-12 18:47 330 查看
昨天碰到一个奇葩的问题。

我定义的数据结构

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语言是古老的魔法,你可以天马星空,但是死也快。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: