1 분 소요

템플릿을 만들때

  • 값(T) 으로 전달 받으면 argument decay 되어 형 변환되어 전달된다.
    • 배열: 포인터
    • 함수: 함수 포인터
  • 참조(&T) 로 전달 받으면 정확히 전달 된다.
    • 배열: 배열
    • 함수: 함수
  • 문자열은 포인터가 아니라 배열
  • main: 함수
  • &main: 함수 주소
  • 하지만 함수는 함수 포인터로 암시적 형 변환 됨. ```cpp #include

template void foo(T &a) { // T 가 무슨 타입으로 결정되었는지 알고싶으면아래처럼 확인 std::cout<<typeid(a).name()<<std::endl; // // 또는 typeid(T).name(); }

int main() { int n = 0; int x[10]; foo(n); // int foo(x); // int [10] foo(“abcd”);// char const [5] foo(main); // int __cdecl(void) } ``` T& 로 만들때 문자열을 보낼 때 혼란스러워 질 수 있다.<p> 이 경우, 문자열 전용 버전을 만들면 된다.<p> 함수를 찾는 순서

  1. 정확한 타입: 문자열 배열 버전의 함수
  2. 변환 가능한 타입: 문자열 포인터 버전의 함수
  3. template 사용
  4. 가변인자 사용
  5. error.

카테고리:

업데이트:

댓글남기기