on pg。作为跳入C ++ 的149,作者声明:
通常,您不应存储刚刚在引用中分配的内存:
int &val = *(new int);
原因是引用不能立即访问原始内存地址。你可以使用& ,但通常引用应为变量提供附加名称,而不是动态分配内存的存储。
这在参考初始化的右侧意味着什么?
我理解声明(并立即初始化)引用的符号如下:
int x = 1;
int &ref = x;
但我不明白文章中*(new int)
所指的内容。无论这意味着什么,这样做是违法的,还是一种不好的做法?
答案 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;,因为毕竟你已经分配了一些东西并需要适当的清理。