C++/Templates
2021. 3. 22. 00:07
멤버 함수를 한 번 더 템플릿화하기
- 클래스 템플릿에 있는 멤버 함수를 또 다시 템플릿화할 수 있다.
예제
#include <iostream>
using namespace std;
template <typename T>
class A
{
T value_;
public:
A(const T & input)
: value_(input)
{}
template <typename TT>
void doSomething()
{
cout << typeid(T).name() << " " << typeid(TT).name() << endl;
}
void print()
{
cout << value_ << endl;
}
};
int main()
{
A<int> a_int(123);
a_int.print();
a_int.doSomething<float>();
}
/* stdout
123
int float
*/
응용
char
타입을int
타입으로 형변환하여 출력하기- 함수 템플릿은 함수명 옆에
<int>
를 명시하는 대신 인자로int
타입의 값을 넣으면 파라미터가 알아서 들어간다.
#include <iostream> using namespace std; template <typename T> class A { T value_; public: A(const T & input) : value_(input) {} template <typename TT> void doSomething(const TT& input) { cout << typeid(T).name() << " to " << typeid(TT).name() << endl; cout << (TT)value_ << endl; } void print() { cout << value_ << endl; } }; int main() { A<char> a_char('A'); a_char.print(); a_char.doSomething(int()); } /* stdout A char to int 65 */
- 함수 템플릿은 함수명 옆에
'C++ > Templates' 카테고리의 다른 글
C++ 포인터 템플릿 특수화(Pointer Templates Specialization) (0) | 2021.03.22 |
---|---|
C++ 템플릿 부분 특수화 (Templates Partial Specialization) (0) | 2021.03.22 |
C++ 클래스 템플릿 특수화 (Class Templates Specialization) (0) | 2021.03.22 |
C++ 함수 템플릿 특수화 (Function Templates Specialization) (0) | 2021.03.22 |
C++ 자료형이 아닌 템플릿 매개변수 (Non-type Templates Parameters) (0) | 2021.03.21 |