방금 STL 소스 코드를 다운로드했고 STL 템플릿 클래스에 대한 모든 정의가 .h 파일에 포함되어 있음을 확인했습니다. 함수 정의의 실제 소스 코드는 .cpp/.c 파일보다는 .h 파일에 있습니다. 이것에 대한 이유는 무엇입니까?전체 C++ STL 코드가 .cpp/.c 파일 대신 .h에 포함되는 이유는 무엇입니까?
http://www.sgi.com/tech/stl/download.html
방금 STL 소스 코드를 다운로드했고 STL 템플릿 클래스에 대한 모든 정의가 .h 파일에 포함되어 있음을 확인했습니다. 함수 정의의 실제 소스 코드는 .cpp/.c 파일보다는 .h 파일에 있습니다. 이것에 대한 이유는 무엇입니까?전체 C++ STL 코드가 .cpp/.c 파일 대신 .h에 포함되는 이유는 무엇입니까?
http://www.sgi.com/tech/stl/download.html
거의 컴파일러는 템플릿 연결 구현할 때문입니다. 힘들어.
여기에 간단한이다하지만 그것에 대해 유익한 기사 (내 생각) : 정말 나는 그것이 널리 구현되지 않은하다는 이외 잘 알고 아니에요 뭔가 때문에 http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=53
내가 말하는 "나는 생각한다." 나는 처음에 표준이 그것을 요구하지 않았지만 C++ 03에서 "export"의 정의를 보았을 때 그것이 선택이라는 것을 전혀 알지 못했다. 어쩌면 그것은 단지 실패한 표준 일 것입니다.
템플릿을 코드 생성이라고 생각하십시오. 미리 어떤 템플릿을 사용할 지 모르면 컴파일 할 수 없습니다. 따라서 헤더에 구현을 유지해야합니다.
이 어떤 인라인을 허용하고 때로는 (표준 : 종류 등) 템플릿 물건을 사용하여, 빠른 일반 C.보다
(오히려 불행한) 수출 키워드. – ChrisInEdmonton
나는 arlready가 그것에 대한 충분한 설명과 링크, 그것의 비 구현, 그리고 앞으로의 가능성을 제시하기 전에 사람들을 생각한다.) –
감사 작동 이유는 설명 바로 일전에 내가 실제로 템플릿에 링크 된 C++ 궁금 해서요! –
내보내기는 C++ 98 표준의 일부입니다.하지만 대부분의 컴파일러에서는 지원하지 않습니다. (마지막으로 g ++ 팀은 구현에 관심이 없습니다.) –
고맙습니다. – Judeo