일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- AI
- LG Aimers
- 분류
- PCA
- OpenAI
- 티스토리챌린지
- LG Aimers 4th
- 회귀
- 딥러닝
- supervised learning
- Classification
- deep learning
- LLM
- ChatGPT
- Machine Learning
- 머신러닝
- GPT-4
- 해커톤
- regression
- 지도학습
- gpt
- LG
- 오블완
Archives
- Today
- Total
SYDev
C++ Chapter 14-3 : 템플릿 인자 본문
템플릿 매개변수에서 변수의 선언
- 템플릿을 정의할 때 결정되지 않은 자료형을 의미하는 용도로 사용되는 T 또는 T1, T2와 같은 문자를 가키려 '템플릿 매개변수'라 한다.
- 템플릿 매개변수에 전달되는 자료형 정보를 가리켜 '템플릿 인자'라 한다.
이를 이용한 예제를 살펴보자.
#include <iostream>
using namespace std;
template <class T, int len>
class SimpleArray
{
private:
T arr[len];
public:
T& operator[] (int idx) { return arr[idx]; }
SimpleArray<T, len>& operator=(const SimpleArray<T, len>& ref)
{
for(int i=0; i<len; i++)
arr[i]=ref.arr[i];
return *this;
}
};
int main(void)
{
SimpleArray<int, 5> i5arr1;
for(int i=0; i<5; i++)
i5arr1[i]=i*10;
SimpleArray<int, 5> i5arr2;
i5arr2=i5arr1; //둘 다 type이 SimpleArray<int, 5>이기 때문에 대입연산 가능
for(int i=0; i<5; i++)
cout<<i5arr2[i]<<", ";
cout<<endl;
SimpleArray<int, 7> i7arr1;
for(int i=0; i<7; i++)
i7arr1[i]=i*10;
SimpleArray<int, 7> i7arr2;
i7arr2=i7arr1; //둘 다 type이 SimpleArray<int, 7>이기 때문에 대입연산 가능
for(int i=0; i<7; i++)
cout<<i7arr2[i]<<", ";
cout<<endl;
return 0;
}
0, 10, 20, 30, 40,
0, 10, 20, 30, 40, 50, 60,
위 예제처럼 배열의 길이를 템플릿 매개변수를 이용해 받으면, SimpleArray<int, 5>와 SimpleArray<int, 7>은 서로 다른 타입이기 때문에 다음의 대입문이 성립되지 않는다.
int main(void)
{
SimpleArray<int, 5> i5arr1;
SimpleArray<int, 7> i7arr1;
i5arr1 = i7arr1; //compile error
. . . .
}
템플릿 매개변수의 디폴트 값 지정
- 템플릿 매개변수는 디폴트 값의 지정도 가능하다.
이와 관련된 다음 예제를 살펴보자.
#include <iostream>
using namespace std;
template <typename T=int, int len=7> //Default Value 지정
class SimpleArray
{
private:
T arr[len];
public:
T& operator[] (int idx) { return arr[idx]; }
SimpleArray<T, len>& operator=(const SimpleArray<T, len>&ref)
{
for(int i=0; i<len; i++)
arr[i]=ref.arr[i];
return *this;
}
};
int main(void)
{
SimpleArray<> arr;
for(int i=0; i<7; i++)
arr[i]=i+1;
for(int i=0; i<7; i++)
cout<<arr[i]<<" ";
cout<<endl;
return 0;
}
1 2 3 4 5 6 7
참고자료
- 윤성우, <윤성우의 열혈 C++ 프로그래밍>, 오렌지미디어, 2010.05.12
'Programming Lang > C++' 카테고리의 다른 글
C++ Chapter 15-1 : 예외상황과 예외처리의 이해 (0) | 2023.08.01 |
---|---|
C++ Chapter 14-4 : 템플릿과 static (2) | 2023.07.31 |
C++ Chapter 14-2 : 클래스 템플릿의 특수화(Class Template Specialization) (0) | 2023.07.31 |
C++ Chapter 14-1 : Chapter 13 내용의 확장 (0) | 2023.07.31 |
C++ Chapter 13-2 : 클래스 템플릿(Class Template) (0) | 2023.07.28 |