【发布时间】:2015-10-03 13:31:57
【问题描述】:
这显然很糟糕:
int& GetInvalidIntPtr(){
int i;
return i;
}
这是我的例子:
FVector& GetDirectionFromCamera(){
return GetActorLocation() - GetCameraComponent()->GetComponentLocation();
}
一个 FVector 基本上包含 3 个浮点数,这就是为什么我想返回引用而不是副本的原因。但是,我相信计算的结果会存储在堆栈中,对吧?
还是因为我立即返回结果而在堆上分配了结果?
【问题讨论】:
-
这取决于第二个示例中函数和运算符的签名和行为。所以,如果他们返回对在堆上创建的对象的引用,你就可以了。如果没有,你就不行。
-
不知道
operator-返回什么是不可能的,但正确的答案很简单:返回一个副本,停止尝试优化复制三个浮点数的微小成本。 Keep It Simple, Stupid.
标签: c++ reference scope return