Distance& dist = *(new Distance) C++

来源:百度知道 编辑:UC知道 时间:2024/05/21 20:47:52
Distance& dist = *(new Distance)
对这个语句,注意是C++中哦!我只知道new是返回一个内存块的指针,
再使用*就是指的创建的那个临时对象吧,关键我不知道左边为什么要用
Distance&,难道就用Distance不行吗?
麻烦给我讲解下,谢谢了!
难道释放的时候只能针对引用进行释放吗?

其实我觉得用Distance也可以, 不过不好.

不过当你用了Distance后,你如何释放new Distance创建的内存呢????

如果你用 Distance& dist = *(new Distance) //这个是引用这个*(new Distance)
可以delete &dist;

但 如果你用Distance dist = *(new Distance) //这个是赋值操作

就不能 delete &dist;

难道释放的时候只能针对引用进行释放吗?

在这种情况下是的.
因为你用*(new Distance)建立的临时变量根本无法释放,除非你帮临时变量改个名字,而这个引用正正是这个临时变量的名字.