这个引用符号表示什么?

时间:2016-02-04 02:11:42

标签: c++

on pg。作为跳入C ++ 的149,作者声明:

  

通常,您不应存储刚刚在引用中分配的内存:

int &val = *(new int);
     

原因是引用不能立即访问原始内存地址。你可以使用& ,但通常引用应为变量提供附加名称,而不是动态分配内存的存储。

这在参考初始化的右侧意味着什么?

我理解声明(并立即初始化)引用的符号如下:

int x = 1;
int &ref = x;

但我不明白文章中*(new int)所指的内容。无论这意味着什么,这样做是违法的,还是一种不好的做法?

2 个答案:

答案 0 :(得分:0)

嗯,你错误引用了它。它是*(new int),它意味着与其他任何*<some pointer here>相同 - 它取消引用指针。

与此相同:

int* x = new int;
int& ref = *x;

当然*x是指动态分配的int对象的表达式。事情就是,你没有变量名x可以玩,现在必须在某个时候写delete &ref,这有点奇怪。

避免的。

答案 1 :(得分:0)

我的意思是,从技术上来说这不是一个好主意,但当然你可以稍后修复这个混乱

int &val = *(new int);
val = 5;
delete &val;

如果是一个班级...而且你不想使用 - &gt;操作员,你当然可以使用这个技巧,只要你记得删除&amp; val;,因为毕竟你已经分配了一些东西并需要适当的清理。