【发布时间】:2021-12-08 09:45:24
【问题描述】:
我可以先获取一个默认结构对象,然后再获取一个指向它的指针。 但我怀疑必须有一些优雅的方式来做到这一点;可能在一个语句中。
auto defaultStructObject = SomeStruct{};
auto pointerToDefaultStructObject = &defaultStructObject;
【问题讨论】:
-
使用右值引用 &&
-
您是否要删除
auto defaultStructObject = SomeStruct{};这一行而只需要一个指针? -
SomeStruct{};是一个右值,你需要延长它的生命,否则它将在完整表达式结束时被销毁;如果你能接受它的地址,你会得到一个悬空指针。您可以使用 rvalue 引用或 const 引用来延长它的生命周期,例如auto && refToDefaultStructObject = SomeStruct{}; -
如果你的类没有 arg 构造函数,你可以这样做 auto* pointerToMyStructObj = new MyStruct{};