c++ - 引用本地可访问数据的正当理由?

标签 c++ reference

所以我只是在关注自己的业务,查看我编写的一些代码,然后我注意到我做了一些事情。我引用了 protected 数据 float& px = A->p.x 我这样做纯粹是为了缩短 if 语句的宽度并使其更具可读性。该函数当然被声明为类的友元,因此它可以访问 protected 数据。此外,还有 4 篇相似的引用文献。

我想知道这是否是提供引用的正当理由。 如果没有,是否有正当理由创建一个引用,该引用绝不是正在使用的函数的参数。

例子:

void generic_function(A_class* A)
{
float& x = A->x;
//purposeful and valid code using x?
}

我尽我所能地表达了这个问题,如果它没有传达我提出问题的目的,我深表歉意。

编辑: 作为重点。我关注实时应用程序设计的优化。

最佳答案

毫无疑问,这是一种非常有效的引用方式。任何时候你需要一个内存中另一个位置的替代品来缩短你的代码,引用都是一个完美的选择。在您的情况下,它还缩短了取消引用链:如果您多次使用 x ,例如,在一个循环中,您将减少取消引用的次数,因为您不再需要阅读A 以到达其中的 x。编译器可能足够聪明,可以为您优化取消引用,因此您不应该将其作为微优化问题来进行。

使用引用的另一个正当理由是访问容器内的缓存值。从 std::map 访问缓存值的常见模式是将值读入引用,检查它,然后分配给引用,从而绕过映射中的第二次查找。这样做的时机可能很重要,尤其是在紧密的循环中,因此可以将对 map 的引用视为一种优化技术。

关于c++ - 引用本地可访问数据的正当理由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21948535/

相关文章:

c# - C# 项目中的神秘 VBIDE 引用已损坏

Javascript - 在更改函数之前保留对函数的引用

c++ - 限制客户端在堆 C++ 上分配对象

c++ - fmod 告诉我 1 的小数部分是 1

c++ - 访问结构中的字符指针

php - 函数内部的静态变量不能保存对单例的引用

c++ - 如何连接通过 cython 返回对象引用的 C++ 函数

c++ - 具有无效值的初始化引用

c++ - 如果通过引用传递变量,则会出现冗余 mov 操作

c++ - float 到整数的精度与 double 到整数的精度,意想不到的结果