引用动态分配的对象(“在运行时”)

时间:2013-02-13 23:50:57

标签: c++ reference initialization

基本上我有很多编写的代码,假设文件级静态是一个结构。所以所有引用都像 struct.member

我必须对此代码进行更改并使其成为 static struct * 并在运行时分配此结构。

我想创建一个参考 struct& ref = * myStatic 因为我很懒,并且不想将 struct.member 的A TON更改为 struct-> member

但引用需要在声明时初始化(对吗?),我只知道我想在运行时引用它。这可能吗?

(如果它令人困惑......我使用的是struct来代替我的实际结构名,而不是文字c ++ struct关键字)

1 个答案:

答案 0 :(得分:1)

“引用需要在声明时初始化(对吗?)”

将初始化引用的对象必须存在于创建引用时[1],在这种情况下存在:

MyStruct* s = new MyStruct;
MyStruct& ref = *s;

这为类型为MyStruct的对象动态分配内存,然后构造此对象,最后为该对象创建引用ref。只要你小心s的生命周期就完全没问题了。一旦s所在的内存被释放,引用将变为无效。

虽然决定您是否会使用引用,但不应基于您对使用.替换->感到懒惰。


[1] C ++ 03标准8.3.2§4“引用应初始化为引用有效对象 或功能。“