반응형
배열의 특징
- 자신과 동일한 타입으로 초기화 될 수 없다.
- 배열의 이름은 배열의 첫번째 요소의 주소로 암시적 형 변환 된다.
- 배열을 가리키는 참조를 만들 수 있다.
함수 템플릿을 만들때
- 배열을 값으로 받으면 T는 요소 타입의 포인터로 결정된다.
- 배열을 참조로 받으면 T는 배열 타입으로 결정된다.
#include <iostream>
template<typename T>
void foo(T a)
{
}
template<typename T>
void goo(T& a)
{
}
int main()
{
int x[3] = { 1,2,3 };
foo(x);
goo(x);
}
관련 예제
- 문자열의 타입 : char 배열
- 문자열을 값으로 받으면 T는 const char* 결정되고, 참조로 받으면 const char[]로 결정된다.
- 크기가 다른 배열은 다른 타입이다.
#include <iostream>
template<typename T>
void foo(T a, T b)
{
}
template<typename T>
void goo(T& a, T& b)
{
}
int main()
{
foo("orange", "apple"); // ok
goo("orange", "apple"); // error
}
반응형
'프로그래밍 언어 > C++' 카테고리의 다른 글
C++ 템플릿 일반화된 복사 생성자(Generic copy constructor) (0) | 2020.12.31 |
---|---|
C++ 템플릿 클래스 템플릿(Class template) (0) | 2020.12.31 |
C++ 템플릿 타입 추론(배열의 주소) (0) | 2019.07.14 |
C++ 템플릿 타입 추론(Template Argument Type Deduction) (0) | 2019.07.14 |
C++ 템플릿 타입 추론(std::typeid, boost::type_index 활용) (0) | 2019.07.14 |