C ++에서 예외와 같은 기능은 전체 프로그램에 영향을 미칩니다. 전체 프로그램 에서이를 비활성화 하거나 코드 전체에서 처리해야합니다. C ++ Report 의 유명한 기사는 다음과 같습니다.
직관적으로 코딩 예외의 어려운 부분은 명시적인 던지기와 잡기가 아닙니다. 예외를 사용하는 것의 가장 어려운 부분은 임의의 예외가 발생 지점에서 처리기로 전파되어 안전하게 도착하고 프로그램의 다른 부분을 손상시키지 않으면 서 모든 개입 코드를 작성하는 것입니다.
new
예외를 던지기 도하므로 전체 프로젝트에서 예외를 모두 비활성화하지 않는 한 예외를 발생 시키지 않는 함수 만 호출하지 않는 한 모든 함수는 기본 예외 안전 을 제공해야합니다 .
따라서 예외는 "전체 프로그램"또는 "전체 팀"기능입니다. 이는 팀을 사용하는 모든 사람이 이해해야하기 때문입니다. 그러나 내가 아는 한 모든 C ++ 기능이 그런 것은 아닙니다.
가능한 예제는 템플릿을 얻지 못했지만 사용하지 않는 경우에도 여전히 올바른 C ++를 작성할 수 있습니다. 그렇지 않습니까? 심지어 sort
정수 배열을 호출 하고 놀라운 속도 이점을 누릴 수 있습니다. qsort
버그의 위험이없는 C (함수 포인터가 호출되지 않기 때문에) 템플릿이 "전체 팀"이 아닌 것 같습니다.
코드를 직접 사용하지 않고 "전체 팀"인 다른 C ++ 기능이 있습니까? 특히 C에없는 기능에 관심이 있습니다.
업데이트 : 특히 알아야 할 언어 적용 신호가없는 기능을 찾고 있습니다. 첫 번째 답변은 전체 팀이기도 한 const-correctness를 언급했기 때문에 모든 사람이 그것에 대해 배워야합니다. 그러나 AFAICS는로 표시된 함수를 호출하는 경우에만 영향을 미치며 const
컴파일러는 상수가 아닌 객체에서 호출하지 못하게하므로 Google에 무언가를 얻습니다. 예외적으로, 당신은 그것을 얻지 못합니다. 또한 사용하는 즉시 항상 사용 new
되므로 예외는 더 "보이지 않는"것입니다. 나는 이것을 객관적으로 표현할 수 없기 때문에 전체 팀 기능을 높이 평가할 것입니다.
업데이트 2 : C ++ 기능 대신 많은 양의 주류 프로그래밍 언어에 적용되는 멀티 스레딩과 같은 것을 제외하기 위해 "C ++ 관련 기능"과 같은 것을 작성해야합니다.
부록 : 왜이 질문이 객관적인지 궁금하다면
C ++은 복잡한 언어이므로 많은 프로젝트 또는 코딩 가이드가 "간단한"C ++ 기능을 선택하려고 시도하고 많은 사람들이 대부분 주관적인 기준에 따라 일부 기능을 포함하거나 제외하려고합니다. 이에 대한 질문은 SO에서 정기적으로 정당하게 종결됩니다.
대신, 나는 "전체 팀"언어 기능이 무엇인지 (정확하게) 정확하게 정의하고 C ++에 관한 문헌에서 광범위한지지 증거와 함께 예제 (예외)를 제공하고 C ++에서 전체 팀 기능을 요구합니다. 예외를 넘어.
"팀 전체"기능을 사용해야하는지 또는 관련 개념인지 여부는 주관적 일 수 있지만 이는 항상이 질문의 중요성이 주관적임을 의미합니다.