基本上我有很多代码是假设文件级静态是一个结构而编写的。所以所有引用都像struct.member。
我不得不更改此代码并将其设为static struct * 并在运行时分配此结构。
我想创建一个引用 struct& ref = *myStatic 因为我很懒,不想将大量的 struct.member 更改为 结构->成员。
但是引用在声明时需要初始化(对吗?)而且我只知道我希望它在运行时引用什么。这可能吗?
(以防混淆..我使用 struct 一词代替我的实际结构名称,而不是文字 c++ struct 关键字)
最佳答案
“引用需要在声明时初始化(对吧?)”
引用将被初始化的对象必须在创建引用时存在 [1],在这种情况下存在:
MyStruct* s = new MyStruct;
MyStruct& ref = *s;
这为 MyStruct
类型的对象动态分配内存,然后构造此对象,最后创建对此对象的引用 ref
。只要您注意 s
的生命周期就完全没问题。一旦s
所在的内存被释放,引用就会失效。
尽管决定是否使用引用不应该基于您是否懒惰将 .
替换为 ->
。
[1] C++03 标准 8.3.2 §4:“应初始化引用以引用有效对象 或功能。”
关于c++ - 引用动态分配的对象 ("at run-time"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14865481/