C++클래스 템 플 릿,함수 템 플 릿 전 특 화,편 특 화 사용

클래스 템 플 릿 전 특 화,편 특 화

#pragma once
#include <iostream>
#include <map>
 
template <typename T, typename U>
class TC
{
public:
 TC() 
 {
 std::cout << "        " << std::endl;
 }
 void funtest()
 {
 std::cout << "        " << std::endl;
 }
};
 
template<>
class TC<int, int>
{
public:
 TC()
 {
 std::cout << "         " << std::endl;
 }
 void funtest()
 {
 std::cout << "         " << std::endl;
 }
};
 
template<>
void TC<double, double>::funtest()
{
 std::cout << "       " << std::endl;
 
}
main.cpp

#include <iostream>
#include "template.h"
using namespace std;
 
int main()
{
 TC<char, int> tchar;
 tchar.funtest();
 TC<int, int> tint;
 tint.funtest();
 TC<double, double> tdouble;
 tdouble.funtest();
}
출력:
일반화 버 전 구조 함수
일반화 버 전 구성원 함수
전 특 화 버 전 구조 함수
전 특 화 버 전 멤버 함수
일반화 버 전 구조 함수
전 특 화 버 전 함수
 2.템 플 릿 이 특 화 되 었 습 니 다.
1.템 플 릿 매개 변수 수량:
template.h

#pragma once
#include <iostream>
#include <map>
 
template <typename T, typename U, typename W>
class TC2
{
public:
 void funtest()
 {
 std::cout << "        " << std::endl;
 }
};
 
template <typename U>
class TC2<int, U, double>
{
public:
 void funtest()
 {
 std::cout << "         " << std::endl;
 }
};
main.cpp

#include <iostream>
#include "template.h"
using namespace std;
 
int main()
{
 TC2<double, double, double> tdouble2;
 tdouble2.funtest();
 TC2<int, double, double> tint2;
 tint2.funtest()
}
출력:
일반화 버 전 구성원 함수
편 특 화 버 전 멤버 함수
2.템 플 릿 매개 변수 범위:
template.h

#pragma once
#include <iostream>
#include <map>
 
template <typename T>
class TC3
{
public:
 void funtest()
 {
 std::cout << "        " << std::endl;
 }
};
 
template <typename T>
class TC3<const T>
{
public:
 void funtest()
 {
 std::cout << "const T         " << std::endl;
 }
};
 
template <typename T>
class TC3<T&>
{
public:
 void funtest()
 {
 std::cout << "T&         " << std::endl;
 }
};
 
template <typename T>
class TC3<T *>
{
public:
 void funtest()
 {
 std::cout << "T *         " << std::endl;
 }
};
main.cpp

#include <iostream>
#include "template.h"
using namespace std;
 
int main()
{
 TC3<int> tint3;
 tint3.funtest();
 TC3<int &> tint3_ref;
 tint3_ref.funtest();
 TC3<int *> tint3_point;
 tint3_point.funtest();
 TC3<const int> tint3_const;
 tint3_const.funtest();
}
출력:
일반화 버 전 구성원 함수
T&편 특 화 버 전 멤버 함수
T*편 특 화 버 전 멤버 함수
const T 편 특 화 버 전 멤버 함수
 3.함수 템 플 릿 전 특 화(편 특 화 할 수 없 음)
template.h

#pragma once
#include <iostream>
#include <map>
 
template <typename T, typename U>
void tfunc(T& a, U& b)
{
 std::cout << "tfunc       " << std::endl;
}
 
template <>
void tfunc(int& a, int& b)
{
 std::cout << "tfunc        " << std::endl;
}
main.cpp

#include <iostream>
#include "template.h"
using namespace std;
 
int main()
{
 int a1 = 1;
 double b1 = 3.2;
 tfunc(a1, b1);
 tfunc(a1, a1);
}
출력:
tfunc 일반화 버 전 함수
tfunc 전체 특 화 버 전 함수
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기