關於c++模板特例化測試
阿新 • • 發佈:2020-09-21
模板特例化也叫模板偏特化,乍聽起可能有點摸不著頭腦,實際上字如其名,他就是模板的一種特例存在;比如在一個類中,模板引數接受指標型別的時候需要特殊處理,則我們可以將指標版本的那一份專門抽調出來;話不多說直接上程式碼
//標頭檔案 #ifndef __Template_Hpp_ #define __Template_Hpp_ #include <stdio.h> #include <iostream> using namespace std;
//通用版本 template <typename T> class My_Class { public: My_Class(T key, int value) :key(key), value(value) { printf("the one test----->\n"); } public: int value; T key; void print_Info() { std::cout << "the key is:" << key << " value is:" << value << std::endl; } };
//指標版本 template <typename T> class My_Class<T*> { public: My_Class(T* key, int value) :key(key), value(value) { printf("the two test----->\n"); } public: int value; T* key; void print_Info() { std::cout << "the key is:" << *key << " value is:" << value << std::endl; } }; #endif
測試程式碼如下:
控制檯列印輸出:
可以看出,m_test呼叫的是通用版本,m_test_Ex呼叫的是指標版本;