【问题标题】:Aliasing a variable using const reference使用 const 引用给变量起别名
【发布时间】:2015-01-26 14:46:52
【问题描述】:

在处理从数组或通过任何其他冗长语法获得的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 相同吗?

【问题讨论】:

  • 请注意,const 引用绑定会导致对象的生命周期(如果需要)延长到该 const 引用的生命周期。

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


【解决方案1】:

这取决于配置。

如果进行了优化,任何好的编译器都应该产生相同的结果。这对于发布版本来说很典型。

如果禁用优化,它应该会产生更少的指令,因为您只是一次取消引用集合。这对于调试构建来说是典型的,在这种情况下,它还具有更容易进行对象检查的优势。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-06
    • 2021-09-20
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    相关资源
    最近更新 更多