2015-01-26 7 views
1

배열에서 가져온 인스턴스 또는 다른 longish 구문을 처리 할 때 const T&을 사용하여 개체의 별칭을 지정하고 내 코드를 더 읽기 쉽게 만듭니다 (물론 개체의 수명 그것을 허용한다). 나는 다른 곳에서 이것을 보았다. 스테판 Reinalter의 훌륭한 블로그에 here. 아래로 벗겨진 그의 코드의 버전 주석 :const 참조를 사용하여 변수 앨리어싱

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 접근과 동일합니다을?

+2

const 참조 바인딩은 개체의 수명이 (필요한 경우) 해당 const 참조의 수명까지 연장됨에 유의하십시오. – Bathsheba

답변

2

구성에 따라 다릅니다.

최적화를 수행하면 좋은 컴파일러에 대해 동일한 결과가 생성되어야합니다. 이는 릴리스 빌드의 경우 일반적입니다.

최적화를 사용하지 않으면 컬렉션을 한 번만 참조 해제하므로 지침이 더 적어집니다. 이는 디버그 빌드에 일반적으로 사용되며,이 경우 객체 검사가 용이하다는 이점이 있습니다.