c++ 模板学习笔记:函数模板的类型识别(权哥)
2013-11-24 21:27
761 查看
当我们实例化一个类模板的时候,我们必须确知用以实例化类型。模板函数则可以识别一个变量、常量、表达式结果的类型。
下面是一个模板函数演示:
下面是一个模板函数演示:
#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; } /*输出: int double char double bool int pointer */
相关文章推荐
- c++ 模板学习笔记:函数模板实现数组通用排序和遍历打印(权哥)
- c++ 模板学习笔记:用数组和类模板模拟通用栈(权哥)
- c++ 模板学习笔记:理解类模板的特化与偏特化(权哥)
- C++学习笔记二十一-运行时类型识别
- c++学习笔记 -- 函数模板与类模板的综合运用
- C++ 学习笔记 1.0 : 基本语言(变量和基本类型,标准库类型,表达式,语句,函数,标准IO库)
- C++函数返回类型学习笔记
- C++学习笔记五——函数重载(多态)、函数模板及函数模板重载和完全匹配与最佳匹配
- C++学习笔记6--高级强制类型转换 命名空间和模块化编程 C预处理器 链接和作用域 函数模板 类模板 内联模板 容器和算法
- c++学习笔记(19.动态类型识别)
- c++ 模板学习笔记:类模板模拟auto_ptr智能指针(权哥)
- C++基础学习笔记 - 函数模板
- C++学习笔记_7:函数模板
- c++学习笔记(十六):函数模板
- C++学习笔记之RTTI(运行时类型识别)
- C++ 学习笔记(19)new/delete表达式、定位new、typeid、dynamic_cast、type_info、枚举类型、成员函数指针、union、位域、volatile限定符、链接指示
- Effecticve学习笔记_条款45:运用成员函数模板接收所有兼容类型
- C++ 学习笔记(14)重载运算与类型转换、函数对象、function库
- c++学习笔记:void*变量,在函数内必须要明确变量类型
- C++学习笔记:函数模板