gpt4 book ai didi

C++ 返回后这是一个 "invalid"引用吗?

转载 作者:行者123 更新时间:2023-11-28 00:11:26 25 4
gpt4 key购买 nike

这显然很糟糕:

int& GetInvalidIntPtr(){
int i;
return i;
}

这是我的例子:

FVector& GetDirectionFromCamera(){ 
return GetActorLocation() - GetCameraComponent()->GetComponentLocation();
}

一个 FVector 基本上包含 3 个 float ,这就是为什么我想返回引用而不是拷贝。但是,我相信计算的结果 存储在堆栈中,对吗?
还是因为我立即返回结果而分配在堆上?

最佳答案

Or is the result allocated on the heap because I am immediatly returning it?

什么?那怎么会发生呢?编译器不会因为您返回超出范围的内容而神奇地在堆上分配内容。

试图优化掉三个 float 的拷贝,冒着未定义行为的风险,因为你不明白代码真正在做什么,这是精神错乱。如果您不知道更好的信息,那么只需返回一份拷贝即可。这是简单而安全的选择。它也可能是最快的,因为简单的代码允许编译器更好地优化。

关于C++ 返回后这是一个 "invalid"引用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32923181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com