当处理T
从数组或通过其他冗长语法获得的实例时,我经常使用aconst T&
作为对象的别名,并使我的代码更具可读性(当然,只有在对象的生存期允许的情况下)。我已经看到了这个在其他地方,例如这里的斯特凡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].startIndex
与m_subMeshes[i].numIndices
直接访问相同?
这取决于配置。
如果进行了优化,那么对于任何好的编译器而言,它都应产生相同的结果。对于发行版本,这将是典型的。
如果禁用了优化,则应该产生较少的指令,因为您仅一次取消了对集合的引用。这对于调试版本来说是很典型的,在这种情况下,它还具有易于检查对象的优点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句