如何用C++获取运行时变量的类型
在上数据库实现技术的时候,老师提到了一个问题:如何在运行时获取一个变量的类型,这用C实现好像要大费周折。今天正好碰到一个问题想看看C++STL中的sort算法的实现,发现里面有个技巧可以很容易做到这一点。我就立刻自己做了一个实验。如下可以获取运行时变量的类型。
其中心思想就是,运用模板函数的重载,是什么类型的参数就去调用参数是那个类型的函数。这样就让编译器去自己识别,而编译器当然知道每个变量的类型。这让我想去探究那些我经常用到的STL算法的实现,如果你也经常使用,何不借此机会好好研究一下呢?我感觉至少有几个好处。
1、增强对C++语言的理解
2、增强程序的设计能力
3、增强算法分析与设计的能力
#include<iostream> void PrintType(int t) template<typename T> inline int main() |
上例的功能很容易扩展,如果你向自己的项目添加了一个新的类型,那么只要重载一个PrintValue( )即可。这仅仅是输出变量的类型,如果你还想再获取变量的类型的时候做更多的事情的话,显然也是很容易做到的。比如你想先获取变量的类型,这样之后才能确定分配给变量多少空间,那么这个也可以轻松实现,只需要改变PrintValue的功能即可。这里可以写一个int PrintValue(YourType t),她甚至应该有一个更好的名字比如int Memory(Type t)。
在不改变函数名的同时对上述函数稍加修改就可以实现输出传入参数应该分配的内存大小。
#include<iostream> int PrintType(int t) template<typename T> inline int main() |