嗯。上面写的就是返回个临时变量。开 godbolt 看,使用`ReloadLog rlog =`这个写法,编译器都会直接优化成这个临时变量的引用。不会有其它的操作。等效代码是:
ReloadLog *rlog = alloca(sizeof(ReloadLog));
reload(rlog);
void reload(RelogLog *rlog) {
*(new(rlog) ReloadLog()) = ...; // return
}
是否可以说,c++ 的返回值,其实都是 c++ 函数的一个隐式参数?
【 在 z16166 的大作中提到: 】
: chatgpt 一般建议:
: 如果 reload() 返回的是 const ReloadLog &,优先用 const ReloadLog &rlog = reload();
: 如果 reload() 返回的是 ReloadLog(临时对象),用 ReloadLog rlog = reload(); 可能更安全,避免悬垂。
: ...................
--
修改:hgoldfish FROM 59.61.199.*
FROM 59.61.199.*