如何用C++获取运行时变量的类型
2016-08-09 15:15
197 查看
如何用C++获取运行时变量的类型
www.educity.cn 发布者:evilbat 来源:网络转载 发布日期:2013年12月25日 在上数据库实现技术的时候,老师提到了一个问题:如何在运行时获取一个变量的类型,这用C实现好像要大费周折。今天正好碰到一个问题想看看C++STL中的sort算法的实现,发现里面有个技巧可以很容易做到这一点。我就立刻自己做了一个实验。如下可以获取运行时变量的类型。
其中心思想就是,运用模板函数的重载,是什么类型的参数就去调用参数是那个类型的函数。这样就让编译器去自己识别,而编译器当然知道每个变量的类型。这让我想去探究那些我经常用到的STL算法的实现,如果你也经常使用,何不借此机会好好研究一下呢?我感觉至少有几个好处。
1、增强对C++语言的理解
2、增强程序的设计能力
3、增强算法分析与设计的能力
#include<iostream> using namespace std; void PrintType(int t) { cout<<"int type"; } void PrintType(char t) { cout<<"char type"; } void PrintType(long t) { cout<<"long type"; } template<typename T> inline void ValueType(T t) { PrintType(t); } int main() { int a; char c; ValueType(a);cout<<endl; ValueType(c);cout<<endl; return 0; } |
在不改变函数名的同时对上述函数稍加修改就可以实现输出传入参数应该分配的内存大小。
using namespace std;
int PrintType(int t)
{
cout<<"int type ";
return sizeof(int);
}
int PrintType(char t)
{
cout<<"char type ";
return sizeof(char);
}
int PrintType(long t)
{
cout<<"long type ";
return sizeof(long);
}
template<typename T> inline
int ValueType(T t)
{
return PrintType(t);
}
int main()
{
int a;
char c;
cout<<ValueType(a)<<" bytes need"<<endl;
cout<<ValueType(c)<<" bytes need"<<endl;
return 0;
}
如何用C++获取运行时变量的类型
www.educity.cn 发布者:evilbat 来源:网络转载 发布日期:2013年12月25日
相关文章推荐
- 如何用C++获取变量的类型2.0版
- C++中如何获取对象的名字(变量名,注意不是类名)
- Transact-SQL 示例 - 如何获取一个变量的数据类型
- JAVA中如何获取变量的类型
- Postgresql如何获取point类型变量的x,y坐标
- 如何获取JS变量类型
- Unix/Linux环境C编程入门教程(22) C/C++如何获取程序的运行时间
- JAVA中如何获取变量的类型
- 如何在运行时获取泛型的类型
- Java 运行时如何获取泛型参数的类型
- Unix/Linux环境C编程入门教程(22) C/C++如何获取程序的运行时间
- c/c++笔试题——const类型的成员函数内部如何改变成员变量
- C++运行时获取类型信息的type_info类与bad_typeid异常
- 如何动态获取VBA变量动态类型(VBA基础知识)
- Transact-SQL 示例 - 如何获取一个变量的数据类型
- 如何初始化C++的static Vector 类型的变量
- c++如何查询变量的类型
- JavaScript用构造函数如何获取变量的类型名
- C++如何在程序运行中获得int等数据类型的最大值
- C/C++中如何判断一个输入的变量是否和其定义的类型一致