对动态分配对象的引用 ( "at run-time" )

reference to dynamically allocated object ("at run-time")

本文关键字:at run-time 引用 动态分配 对象      更新时间:2023-10-16

本质上,我有很多代码是假设文件级静态是一个结构而编写的。因此,所有引用都类似于struct.member.

我不得不对这段代码进行更改,使其成为静态结构*,并在运行时分配这个结构。

我想创建一个引用结构&ref=*myStatic,因为我很懒,不想将struct.member的TON更改为truct->member

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

(以防混淆。我使用单词struct来代替我的实际结构名称,而不是字面上的c++struct关键字)

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

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

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

它为类型为MyStruct的对象动态分配内存,然后构造该对象,最后创建该对象的引用ref。只要你小心s的寿命,这是完全好的。一旦s所在的内存被解除分配,引用将变为无效。

尽管决定是否使用引用不应基于您对用->替换.感到懒惰。


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