728x90
반응형
템플릿 매개변수
템플릿을 사용할 때 template <typename T> 와 같이 사용한다고 했었다.
이때 typename T 와 같이 정의되지 않은 자료형을 사용하기 위한 변수를 타입 매개변수 라고 한다.
비타입 템플릿 매개변수
타입 매개변수 자리에 그냥 변수가 올 수도 있는데 이것을 비타입 템플릿 매개변수라고 한다.
사용하는 방법은 템플릿 매개변수와 동일하다.
따라서 아래 코드처럼 사용할 수 있다.
#include <iostream>
template <int SIZE>
class TestClass {
private:
int arr[SIZE];
};
int main()
{
TestClass<15> test1;
return 0;
}
템플릿 매개변수 활용
비타입 템플릿 매개변수와 타입 매개변수를 함께 사용하는 것도 가능하다.
이를 활용하여 아래 코드처럼 어떤 타입의 배열도 담을 수 있는 클래스를 선언할 수 있다.
#include <iostream>
using namespace std;
template <typename T, size_t SIZE>
class Array {
private:
T data[SIZE];
};
int main() {
Array <int, 10> arr;
return 0;
}
템플릿 매개변수의 디폴트 값
템플릿 매개변수도 함수의 매개변수를 선언할 때처럼 디폴트 값을 설정할 수 있다.
따라서 아래 코드처럼 활용하는 것이 가능하다.
#include <iostream>
using namespace std;
template <typename T = int, size_t SIZE = 10>
class Array {
private:
T data[SIZE];
public:
Array() {
for (size_t i = 0; i < SIZE; i++)
data[i] = 65 + i;
}
void PrintArray() {
for (size_t i = 0; i < SIZE; i++)
cout << data[i] << endl;
}
};
int main() {
Array <> arr1;
Array <double> arr2;
Array <char, 5> arr3;
arr1.PrintArray();
arr2.PrintArray();
arr3.PrintArray();
return 0;
}
728x90
반응형
'C++ > C++ 문법' 카테고리의 다른 글
[C++] 상속 (Inheritance), protected (0) | 2024.10.07 |
---|---|
[C++] 템플릿 (Template), 함수 템플릿, 클래스 템플릿, 템플릿 특수화 (0) | 2024.10.05 |
[C++] std::array (array container) (0) | 2024.10.05 |
[C++] bool 자료형 (0) | 2024.09.30 |
[C++] 단항 연산자 오버로딩 (전위, 후위 연산자 오버로딩) (0) | 2024.09.26 |