转载自:http://blog.csdn.net/mykoma521/archive/2010/06/14/5670988.aspx
在C++中,使用template,有时候可能会需要得到当前所使用的类型.
本文中使用两种办法来。
TT类为使用模板的类,
TT.h
#ifndef _TT_H
#define _TT_H
#include "stdio.h"
template <class T>
class TT{
public:
void printType();
void printType(T);
};
方法1: 实现对不同类型定义不同的方法
template<>
void TT<int>::printType(){
printf("int\n");
}
template<>
void TT<char>::printType(){
printf("char\n");
}
template<class T>
void TT<T>::printType(){
printf("other type\n");
}
方法1结束。
方法2:
template<class T>
void TT<T>::printType(T t){ //判断t是不是int类型的
printf("%d\n",typeid(t).name() == typeid(1).name()); // 得到t的类型名称
}
方法2结束。
#endif
main.c
#include "TT.h"
int main(){
TT<int> t1;
TT<char> t2;
TT<double> t3;
t1.printType();
t2.printType();
t3.printType();
int a = 1;
char b = 'b';
double c = 1.1;
t1.printType(a);
t2.printType(b);
t3.printType(c);
return 0;
}
最后的结果为:
int
char
other type
1
0
0
---------------EOF----------------
分享到:
相关推荐
主要为大家详细介绍了C++利用链表模板类实现一个简易队列,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
里面的参数类型可以是任意类型,这样的话我们就可以减少重复定义,从而让这个函数模板自动适应不同的参数类型,也就是说函数可以适应多种类型的参数,例如double、int或者类什么的。 C++为了实现上面的功能,引入了...
C++/CLI支持两种类型参数机制--通用语言运行时(CLR)泛型和C++模板。本文将介绍两者之间的一些区别--特别是参数列表和类型约束模型之间的区别。 参数列表 参数列表与函数的信号(signature)类似:它标明了参数的...
第1章 语言基础 1 ...0080 C++.NET中数据类型转换的方法 33 0081 在C++.NET中如何定义具有输出参数的函数 33 0082 C++.NET中如何实现方法的默认参数 33 0083 在C++.NET中如何获取系统信息 34
《visual c++ 2010入门经典(第5版)》针对visual c++ 2010版本进行了全面更新,介绍了最新的开发环境和如何使用visual c++构建现实世界中的应用程序。拥有本书,您就迈向了通往使用两种c++版本编写应用程序的成功之路...
本书延续了Ivor Horton讲解编程语言的独特方法,从中读者可以学习Visual C++ 2005的基础知识,并全面掌握在MFC和Windows Forms中访问数据源的技术。此外,本书各章后面的习题将有助于读者温故而知新,并尽快成为C++...
7.11.1 定义数值类类型 7.11.2 定义引用类类型 7.11.3 类属性 7.11.4 initonly字段 7.11.5 静态构造函数 7.12 小结 7.13 练习 第8章 深入理解类 8.1 类的析构函数 8.1.1 析构函数的概念 8.1.2 默认的析构函数 8.1.3 ...
7.11.1 定义数值类类型 7.11.2 定义引用类类型 7.11.3 类属性 7.11.4 initonly字段 7.11.5 静态构造函数 7.12 小结 7.13 练习 第8章 深入理解类 8.1 类的析构函数 8.1.1 析构函数的概念 8.1.2 默认的析构函数 8.1.3 ...
7.11.1 定义数值类类型 7.11.2 定义引用类类型 7.11.3 类属性 7.11.4 initonly字段 7.11.5 静态构造函数 7.12 小结 7.13 练习 第8章 深入理解类 8.1 类的析构函数 8.1.1 析构函数的概念 8.1.2 默认的析构函数 8.1.3 ...
6.3 类、对象和成员的使用方法及区别 6.3.1 声明一个类 6.3.2 命名习惯 6.3.3 定义一个对象 6.3.4 类与对象的区别 6.3.5 对象与成员的关系 6.3.6 不要给类赋值 6.3.7 对象只能调用类中存在的方法 6.4 公有 6.5 私有 ...
6.3 类、对象和成员的使用方法及区别 6.3.1 声明一个类 6.3.2 命名习惯 6.3.3 定义一个对象 6.3.4 类与对象的区别 6.3.5 对象与成员的关系 6.3.6 不要给类赋值 6.3.7 对象只能调用类中存在的方法 6.4 公有 ...
16.5 类型定义:typedef 16. 6 范例:高效的洗牌和发牌模拟程序 16.7 位运算符 16.8 位段 16.9 字符处理库 16.10 字符串转换函数 16.11 字符串处理库中的查找函数 16.12 字符串处理库中的内存函数 16.13 ...
7.11.1 定义数值类类型 7.11.2 定义引用类类型 7.11.3 类属性 7.11.4 initonly字段 7.11.5 静态构造函数 7.12 小结 7.13 练习 第8章 深入理解类 8.1 类的析构函数 8.1.1 析构函数的概念 8.1.2 默认的析构函数 8.1.3 ...
7.11.1 定义数值类类型 7.11.2 定义引用类类型 7.11.3 类属性 7.11.4 initonly字段 7.11.5 静态构造函数 7.12 小结 7.13 练习 第8章 深入理解类 8.1 类的析构函数 8.1.1 析构函数的概念 8.1.2 默认的析构函数 8.1.3 ...
7.11.1 定义数值类类型 7.11.2 定义引用类类型 7.11.3 类属性 7.11.4 initonly字段 7.11.5 静态构造函数 7.12 小结 7.13 练习 第8章 深入理解类 8.1 类的析构函数 8.1.1 析构函数的概念 8.1.2 默认的析构函数 8.1.3 ...
16.5 类型定义:typedef 16. 6 范例:高效的洗牌和发牌模拟程序 16.7 位运算符 16.8 位段 16.9 字符处理库 16.10 字符串转换函数 16.11 字符串处理库中的查找函数 16.12 字符串处理库中的内存函数 16.13 ...
2.3 模板类的拷贝构造函数 3 2.4 基本类型数据初始化 3 2.5 异常处理 4 2.6 命名空间 4 2.7 using声明 4 2.8 namespace std 4 2.9 explicit关键字 5 2.10 新的类型转换符 5 2.11 静态常量成员的初始化 6 2.12 时间...