'const auto'에는 어떤 의미가 있습니까?
질문은 충분히 분명하다고 생각합니다. 의지 auto키워드 const를-다움을 자동 감지, 또는 항상 예를 들어가있는 경우에도 const가 아닌 유형을 반환합니다. 두 가지 버전의 함수 (하나는 반환 const하고 다른 하나는 반환 하지 않음).
기록을 const auto end = some_container.end()위해 for-loops 전에 사용 하지만 이것이 필요한지 아니면 정상과 다른지 모르겠습니다 auto.
어쩌면 당신은 혼동 const_iterator하고 const iterator. 첫 번째 요소는 const 요소를 반복하고 두 번째 요소는 operators++ 및-를 사용할 수 없기 때문에 전혀 반복 할 수 없습니다 .
.NET Framework에서 반복하는 경우는 거의 없습니다 container.end(). 일반적으로 다음을 사용합니다.
const auto end = container.end();
for (auto i = container.begin(); i != end; ++i) { ... }
const auto x = expr;
~와 다르다
auto x = expr;
같이
const X x = expr;
~와 다르다
X x = expr;
따라서 .NET 이없는 경우처럼 const auto및 const auto&많이 사용하십시오 auto.
오버로드 해결은 반환 유형의 영향을받지 않습니다. const또는 constlvalue의 no x가에서 호출되는 함수에 영향을주지 않습니다 expr.
두 가지 템플릿이 있다고 가정합니다.
template<class U> void f1( U& u ); // 1
template<class U> void f2( const U& u ); // 2
auto타입을 추론하며, 가변 파라미터와 동일한 종류 것이다 u합니다 (같이 // 1, 케이스) const auto파라미터가 가변으로 동일한 유형의 것 u에 갖는 // 2경우. 그러니 const auto강제 const한정자입니다.
컴파일러는 자동 한정자의 유형을 추론합니다. 추론 된 유형이 some_type이면 const auto로 변환됩니다 const some_type. 그러나 좋은 컴파일러는 auto변수 의 전체 범위를 검사 하고 값이 어디에서나 변경되는지 확인합니다. 그렇지 않은 경우 컴파일러 자체는 다음과 같은 유형을 추론합니다 auto.-> const some_type. 나는 Visual Studio Express 2012에서 이것을 시도했으며 생성 된 기계 코드는 두 경우 모두 동일합니다. 각 컴파일러가 그렇게 할 것인지 확실하지 않습니다. 그러나 const auto다음 세 가지 이유로 사용하는 것이 좋습니다 .
- 코딩 오류 방지. 이 변수를 변경하지 않으려 고했지만 범위 어딘가에서 변경되었습니다.
- 코드 가독성이 향상되었습니다.
- 몇 가지 이유가 추론하지 않는 경우 컴파일러 도움
const을 위해auto.
참고 URL : https://stackoverflow.com/questions/5070521/does-const-auto-have-any-meaning
'IT박스' 카테고리의 다른 글
| numpy 배열의 n 번째 항목마다 서브 샘플링 (0) | 2020.10.27 |
|---|---|
| HTTP 양식에서 HTTPS로 제출하는 것이 안전합니까? (0) | 2020.10.27 |
| 함수에서 키워드 사용-PHP (0) | 2020.10.27 |
| git diff를 사용하여 줄 번호를 추가하고 수정하려면 어떻게해야합니까? (0) | 2020.10.27 |
| MySQL Workbench Edit Table Data는 읽기 전용입니다. (0) | 2020.10.27 |