c++ 模板学习笔记:函数模板的类型识别(权哥)

来源:互联网 发布:nginx ssl跳转 编辑:程序博客网 时间:2024/04/30 12:49

当我们实例化一个类模板的时候,我们必须确知用以实例化类型。模板函数则可以识别一个变量、常量、表达式结果的类型。

下面是一个模板函数演示:

#include <iostream>#include <typeinfo>#include <string>using namespace std;template <typename T>class Type{public:static string name(){return typeid(T).name();}};/*特化:特定某个类型*/template <>class Type<int>{public:static string name(){return "int";}};template <>class Type<char>{public:static string name(){return "char";}};template <>class Type<double>{public:static string name(){return "double";}};template <>class Type<bool>{public:static string name(){return "bool";}};/*偏特化:指针类型*/template<typename T>class Type<T*>{public:static string name(){return Type<T>::name()+" pointer";}};/*模板函数,推测给定常量、变量(或表达式结果)的类型*/template <typename T>const string type(T t){return Type<T>::name();}int main(){cout << type(123) << endl;cout << type(45.6) << endl;cout << type('x') << endl;int a=10;char b='k';cout << type(a/1.0) << endl;cout << type(a<b) << endl;cout << type(&a) << endl;return 0;}/*输出:intdoublechardoubleboolint pointer*/


原创粉丝点击