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

标签 c++ reference initialization

基本上我有很多代码是假设文件级静态是一个结构而编写的。所以所有引用都像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/

相关文章:

angularjs - 单元测试 Angular Controller 的初始化函数

c++ - 如何使用构造函数初始化另一个类中的对象?

JavaScript 单例丢失引用

rust - 为什么不能在同一结构中存储值和对该值的引用?

c++ - 如何在同一个类中声明对成员的引用?

C++ boost 理性类,floor 函数

java从文件初始化对象

c++ - 为什么编译器提示使用未声明的标识符 'f1'

c++ - 如果它为空,则在 C++ 中抛出一个值

c++ - QSortFilterProxyModel 崩溃的应用程序