[C++] C++ 11 Argument로 전달된 정적 배열의 크기
글 작성자: Sowhat_93
보통 버퍼를 Argument로 전달하면 char* 형태로 전달한 다음 인자가 하나 더 들어간다.
size_t 타입으로 cbSize같은 형태로 배열의 크기를 전달하곤 하는데,
템플릿을 사용할때에 피곤한 일이 발생한다.
여러개의 오버로딩된 함수를 템플릿 함수 내 에서 호출한다고 하면,
인자의 개수가 같은 쪽이 훨씬 더 구현하기 깔끔하기 때문이다.
이렇게 배열의 크기가 인자의 개수를 통일하지 못하게 막고 있다면,
C++11 부터 추가된 Type Inference를 이용하면 간단하게 해결할 수 있다.
아래의 예시를 보도록 하자.
간단하다.
template<class T, size_t Size>
void ArraySize(T (&buffer)[Size])
{
std::cout << "Array's Count Of Bytes : " << sizeof(T) * Size << std::endl;
}
int main()
{
int intArray[40];
char charArray[40];
//160
ArraySize(intArray);
//40
ArraySize(charArray);
return 0;
}
'C++' 카테고리의 다른 글
[C++] 스마트 포인터 unique_ptr, shared_ptr, weak_ptr (0) | 2022.03.19 |
---|---|
[C++] Type Casting 연산자 정리 static, dynamic,reinterpret, const (0) | 2022.03.17 |
[C++] C++11 Parameter Pack 사용하기 (0) | 2022.03.05 |
[C++] C++ new 연산자 오버로딩을 이용한 메모리 풀 만들기 (0) | 2022.01.27 |
[C++] C++ 생성자 강제 호출 및 new 연산자 (0) | 2022.01.27 |
댓글
이 글 공유하기
다른 글
-
[C++] 스마트 포인터 unique_ptr, shared_ptr, weak_ptr
[C++] 스마트 포인터 unique_ptr, shared_ptr, weak_ptr
2022.03.19 -
[C++] Type Casting 연산자 정리 static, dynamic,reinterpret, const
[C++] Type Casting 연산자 정리 static, dynamic,reinterpret, const
2022.03.17 -
[C++] C++11 Parameter Pack 사용하기
[C++] C++11 Parameter Pack 사용하기
2022.03.05 -
[C++] C++ new 연산자 오버로딩을 이용한 메모리 풀 만들기
[C++] C++ new 연산자 오버로딩을 이용한 메모리 풀 만들기
2022.01.27