"Essential C++"(특히 2.7 부)의 책에서 저자는 템플릿 메시지의 사용법을 진단 메시지를 표시 한 후 다음 요소를 통해 반복적으로 설명합니다. 벡터템플릿 함수의 ostream 기본 매개 변수
template <typename T>
void display_message(const string& msg, const vector<T>& vec)
{
cout << msg;
for (int i = 0; i < vec.size(); ++i)
cout << vec[i] << ' ';
}
그래서,이 예제는 항상 부여 대부분의 응용 프로그램에, 표준 입력/출력 스트림을 통신에 사용되는 것을 위해 촬영 한 (아마, 다른 많은 아마추어 개발자로) 내가 때문에, 나에게 관심을 가지고 데이터 처리. 그런 다음 저자는 display_message를 구현하는이 방법이보다 유연하다는 점을 언급합니다. 이 유연성이 "빛나"는 상황의 예를 들어 줄 수 있습니까? 즉, 선택적 제 3 매개 변수가 다른 입출력 표현 (예 : 임베디드 장치)을 취하는 경우 또는 극단 대신 간단한 구성으로 사용되는 간단한 추가 일뿐입니다 설명하려고하는 상황?
편집 : @Matteo 이탈리아가 발견,이 당신은이 기능에서 사용할 수있는 두 개의 "유연성"을 혼동 함수 선언
void display_message(const string&, const vector<T>&, ostream& = cout);
세 번째 인수는 컴파일되지 않지만 의미가 없습니다. 그런 식으로 작성 되었습니까? 'ostream & os = cout'과 같지 않은가? 그리고 나머지 함수 본문에서는'cout' 대신'os'를 사용합니까? –
아, 그래! 내 잘못이야. 나는 함수 선언을 제시했다. 당신 말이 맞아요. – TheSOFan
어, 이제 정의가 해제되었습니다 ... 세 번째 매개 변수가 누락되었습니다. –