使用const引用对变量进行别名

时间:2015-01-26 14:46:52

标签: c++ reference const alias const-reference

当处理从数组中获取的T个实例或通过任何其他冗长的语法处理时,我经常使用const T&来对对象进行别名并使我的代码更具可读性(当然只有在生命周期为对象允许它)。我在别的地方见过这个,比如说here关于Stefan Reinalter的精彩博客。剥离并评论他的代码版本:

void Render()
{
    for (size_t i = 0; i < m_visibleSubMeshes.size(); ++i)
    {
        // Get current submesh from array and create alias
        const SubMesh& sm = m_subMeshes[i];

        // Enjoy shortened syntax using the const reference
        context->Draw(sm.startIndex, sm.numIndices);
    }
}

这是否会产生其他说明,或者在所有情况下是否与直接访问m_subMeshes[i].startIndexm_subMeshes[i].numIndices相同?

1 个答案:

答案 0 :(得分:2)

这取决于配置。

如果优化到位,它应该为任何好的编译器产生相同的结果。这对于发布版本来说是典型的。

如果禁用了优化,则应该生成较少的指令,因为您只需要一次取消引用该集合。这对于调试版本来说是典型的,在这种情况下,它还可以具有更容易的对象检查的优势。