对动态分配对象的引用 ( "at run-time" )
reference to dynamically allocated object ("at run-time")
本质上,我有很多代码是假设文件级静态是一个结构而编写的。因此,所有引用都类似于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:"引用应初始化为引用有效对象或功能。"
相关文章:
- 如何处理来自核心指南检查器的关于gsl::at的静态分析警告
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- join() 失败,如果在线程内部调用 io_context.run()
- 在C++中使用 Catch 测试框架编译错误"error: expected ';' at end of declaration list"
- 为什么我会收到"Run-Time Check Failure #2 - Stack around the variable 'pr' was corrupted"错误?
- 调用 dll 函数时"Run-Time Check Failure #0 - The value of ESP"
- "Feature X requires run-time support"的含义是什么?
- 如何传递以 "size determined at run time" 作为引用的动态分配数组?
- constexpr - "Evaluate value at compile time"到底是什么意思?
- "Loop will run at most once (loop increment never executed)" C++
- if / else at compile time in C++?
- 如何使运算符过载并且不使用"Curiously Recurring Template Pattern"和"Run Time polymorphism"
- "Objects are basic run-time entities in an object-oriented system"是什么意思?
- Windows threads (c run-time, pthreads, std::thread)
- c++ Inline Function throw Exception: Run-Time Check Failure
- "Segmentation fault"与"run time"错误?
- Excel VBA:"Run-time error '49': Bad DLL calling convention"调用 C++ dll
- 对动态分配对象的引用 ( "at run-time" )
- c++ 收到错误"Run-Time check failure #2 - stack around variable sub was corrupted"