반응형
C++ 공부 하다가 보면 class template(클래스 템플릿 예제 5가지)
예제1)
template <typename T>
class SimpleTemplate
{
public:
SimpleTemplate(T value) : m_value(value) {}
T getValue() const { return m_value; }
private:
T m_value;
};
int main()
{
SimpleTemplate<int> s1(5);
std::cout << s1.getValue() << std::endl;
SimpleTemplate<double> s2(5.5);
std::cout << s2.getValue() << std::endl;
return 0;
}
실행 결과)
5
5.5
예제2)
template <typename T1, typename T2>
class DualTemplate
{
public:
DualTemplate(T1 value1, T2 value2) : m_value1(value1), m_value2(value2) {}
T1 getValue1() const { return m_value1; }
T2 getValue2() const { return m_value2; }
private:
T1 m_value1;
T2 m_value2;
};
int main()
{
DualTemplate<int, double> d1(5, 5.5);
std::cout << d1.getValue1() << " " << d1.getValue2() << std::endl;
DualTemplate<double, int> d2(5.5, 5);
std::cout << d2.getValue1() << " " << d2.getValue2() << std::endl;
return 0;
}
출력
5 5.5
5.5 5
예제3)
template <typename T>
class Counter
{
public:
Counter() { ++m_count; }
static int getCount() { return m_count; }
private:
static int m_count;
};
template <typename T>
int Counter<T>::m_count = 0;
int main()
{
Counter<int> c1;
Counter<int> c2;
Counter<double> c3;
std::cout << Counter<int>::getCount() << std::endl;
std::cout << Counter<double>::getCount() << std::endl;
return 0;
}
출력)
2
1
예제4)
template <typename T>
class Sorter
{
public:
Sorter(std::vector<T> values) : m_values(values) {}
void sort()
{
std::sort(m_values.begin(), m_values.end());
}
void print() const
{
for (const auto &value : m_values)
{
std::cout << value << " ";
}
std::cout << std::endl;
}
private:
std::vector<T> m_values;
};
int main()
{
Sorter<int> s1({ 5, 4, 3, 2, 1 });
s1.sort();
s1.print();
return 0;
}
Output:
1 2 3 4 5
예제 5)
template <typename T>
class Printer
{
public:
Printer(T value) : m_value(value) {}
void print() const
{
std::cout << m_value << std::endl;
}
private:
T m_value;
};
template <>
class Printer<bool>
{
public:
Printer(bool value) : m_value(value) {}
void print() const
{
std::cout << (m_value ? "true" : "false") << std::endl;
}
private:
bool m_value;
};
int main()
{
Printer<int> p1(5);
p1.print();
Printer<bool> p2(true);
p2.print();
return 0;
}
Output:
5 true
반응형
'프로그래밍 _공부자료. > C++ 공부' 카테고리의 다른 글
c++ string 문자열 자르기 (0) | 2023.02.17 |
---|---|
c++ 추상화 unorderMap 스마트포인터사용하기 (0) | 2023.02.13 |
리눅스 TCP/IP 클라이언트 기본 class 구조 . (0) | 2023.02.11 |
리눅스 TCP/IP 클라이언트 기본코드 구조 (0) | 2023.02.11 |
mfc 로그 폴더 생성 및 로그 txt 파일 만들기 (1) | 2022.05.12 |
댓글