【转载】C++ 模板类中的类型判断和针对不同类型定义不同的方法

转载自: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----------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值