16
A
답변
21
유형이 객체가 아니기 때문에 유형을 전달할 수 없습니다. 그들은 런타임에 존재하지 않습니다.
template <typename T>
void foo() {
cout << sizeof(T);
}
당신은, 예를 들어, foo<int>()
을이 함수를 호출 할 수 있습니다 대신에, 당신은 당신이 컴파일시에 다른 유형의 기능을 인스턴스화 할 수있는 템플릿을합니다. T
이 int
으로 대체 된 함수 버전을 인스턴스화합니다. 조회 : function templates.
8
조셉 맨스필드 (Joseph Mansfield)가 지적했듯이, 함수 템플릿은 사용자가 원하는대로 할 것입니다.
template <typename T>
void foo(T) {
cout << sizeof(T)
}
당신이 x
변수가 foo(x)
로 함수를 호출 할 수 있습니다 : 어떤 경우에는, 당신이 명시 적으로 템플릿 인수를 지정하지 않아도 함수에 매개 변수를 추가하는 것은 의미가 있습니다 매개 변수없는 버전은 foo<T>()
으로 호출되어야합니다.
관련 문제
- 1. 실제 변수 객체를 함수에 전달하십시오.
- 2. c 배열을 nasm 함수에 전달하십시오.
- 3. 많은 인수를 C 함수에 전달하십시오.
- 4. 변수를 함수에 전달하십시오.
- 5. 변수 내용을 Python의 클래스 함수에 전달하십시오.
- 6. 문자열 변수를 R 함수에 전달하십시오.
- 7. 변수를 jQuery 함수에 전달하십시오.
- 8. 함수에 pthread_mutex_t를 전달하십시오.
- 9. 개체를 함수에 다시 전달하십시오.
- 10. php 변수를 jQuery 함수에 전달하십시오.
- 11. ID 매개 변수를 함수에 전달하십시오.
- 12. addEventListener를 사용하여 함수에 인수를 전달하십시오.
- 13. 매개 변수를 스크립트 함수에 전달하십시오.
- 14. fancybox - 'this'를 onClosed 함수에 전달하십시오.
- 15. 파일 핸들을 cython 함수에 전달하십시오.
- 16. AudioQueueBufferRef 데이터를 FFT 함수에 전달하십시오!
- 17. do.call() 함수에 객체 이름을 전달하십시오.
- 18. 구조체의 크기를 함수에 void로 전달하십시오.
- 19. 변수를 .animate 단계 함수에 전달하십시오.
- 20. 데이터를 익명의 자바 함수에 전달하십시오.
- 21. 매개 변수를 $ .doTimeout 함수에 전달하십시오 (
- 22. 동적으로 이름으로 함수에 인수를 전달하십시오.
- 23. 함수에 인수로 CAT 명령을 전달하십시오.
- 24. 변수와 그 내용을 MATLAB의 GUI 함수에 전달하십시오.
- 25. R : 사용자 arg을 DESeq2 함수에 전달하십시오.
- 26. 대리자를 매개 변수와 함께 함수에 전달하십시오.
- 27. C++ 컨테이너를 함수로 전달하십시오.
- 28. 함수에 파일 또는 파일 이름을 전달하십시오.
- 29. 다중 단어 인수를 bash 함수에 전달하십시오.
- 30. 여러 컨트롤을 WebUserControl의 Javascript 함수에 전달하십시오.
컴파일 속도에 신경 쓰지 않는 경우에만이 작업을 수행하십시오. –
@RayGarner 당신은 어떻게 당신을 의미합니까? 두 개의 템플릿 인스턴스화가 두 클래스만큼 비싸지 않습니까? 내 이해는 숨겨진 클래스 때문에 템플릿이 컴파일 시간이 길어지며 템플릿이 어떻게 든 비싸지 않기 때문이 아닙니다. – TankorSmash
@ TankorSmash Right well scale은 프로젝트와 규모가 작기 때문에 걱정할 필요가없는 한 중요한 포인트입니다. 그러나 모든 소형 프로젝트는 큰 프로젝트가됩니다. 따라서 FNG를 읽을 수있는 경우 컴파일 타임에 트레이드 오프를 알기를 원합니다. –