c++类模板及参数类型的运行时判断
来源:互联网 发布:自学英语口语软件 编辑:程序博客网 时间:2024/06/06 13:09
/*C++类模板及参数类型的运行时判断(typeid)*/#include <stdio.h>#include <typeinfo>#include <vector>using namespace std;template<class T>class Exercise{public:typedef T Type;typedef vector < Type > VT;Exercise(int n);void Display();private:VT dv;};template<class T>Exercise<T>::Exercise(int n){T v;printf("type: %s\n", typeid(T).name());for(int i = 0; i < n; i++){v = 1.1 * (i+1);dv.push_back(v);}}template<class T>void Exercise<T>::Display(){char fmt[2][10] = {"%d\t", "%.2f\t"};char *p = fmt[0];if(typeid(T) == typeid(double) || typeid(T) == typeid(float))p = fmt[1];for(typename vector<T>::iterator it = dv.begin(); it != dv.end(); it++){printf(p, *it);}printf("\n\n");}int main(){Exercise<double> ex1(5);ex1.Display();Exercise<float> ex2(5);ex2.Display();Exercise<int> ex3(5);ex3.Display();Exercise<long> ex4(5);ex4.Display();printf("\n");printf("%s\n", typeid(ex1).name());printf("%s\n", typeid(ex2).name());printf("%s\n", typeid(ex3).name());printf("%s\n", typeid(ex4).name());return 0;}
makefile:
CC=g++CFLAGS=BIN=aa: a.cpp$(CC) $(CFLAGS) -o $@ $<clean:rm -f *.o $(BIN)
编译运行:
[zcm@t #66]$makeg++ -o a a.cpp[zcm@t #67]$./atype: d1.102.203.304.405.50type: f1.102.203.304.405.50type: i12345type: l123458ExerciseIdE8ExerciseIfE8ExerciseIiE8ExerciseIlE[zcm@t #68]$
- c++类模板及参数类型的运行时判断
- 利用模板判断模板参数类型
- C++ 模板类型参数
- 模板类型的模板参数
- C++ 类模板中非类型参数的模板参数
- 类模板中非类型参数的模板实参
- 关于模板的类型参数
- 非类型的模板参数
- 非类型模板参数与 非类型类模板参数的使用
- 模板类型参数的类型推断
- 非类型模板类参数
- c语言求三角形的面积及判断三角形类型
- 判断C运行时环境的程序
- [c++] 判断类下是否有某个指定类型及名称的字段
- c++模板元编程七:类型判断的traits类
- 模板的使用:如何判断参数是否为一个类
- C#中关于引用类型做参数时的若干问题及与C/C++对比
- c++:模板的类型萃取
- Missing contentDescription attribute on image
- 一套新的SqlServer2005分页方案,很实用,很快!
- html框架应用的代码
- Maple学习(二)高尔夫球弹道的飞行轨迹
- css投影效果的兼容代码
- c++类模板及参数类型的运行时判断
- 提问的艺术
- 面向对象编程进阶
- Oracle案例:分析10053跟踪文件
- li 标签左右显示[图]
- 自定义UITableView:核心代码就3句
- iphone通讯录AddressBook.framework和AddressBookUI.framework的应用
- WSDL Style和use的组合方式说明
- WPF 自定义控件不能不服