需要实现一个函数,template <class T> int get_unique_id(T t),传入任意类型的变量,变量类型相同时,返回值id相同,且如果为不同的变量类型返回的id不同(例如 get_unique_id(100) 参数为int类型,返回值为 1,get_unique_id(1000) 参数同样为int类型,返回值为 1, get_unique_id('A') 参数为char类型返回值为 2,get_unique_id('d')参数为char类型,返回值为 2...)。
想法一:
首先想到的实现方法:
可以在模板函数get_unique_id()中定义一个static静态变量 初值为static int i = -1; 在外边定义一个全局变量int g_cout = 0;
利用模板函数编译时,相同类型会使用同一个函数,不同类型会生成不同函数的机制进行生成(例如 get_unique_id(2) 和 get_unique_id(3) 都是整型,使用的是同一个函函数get_unique_id(int ),,而get_unique_id('C') 模板生成的函数是 get_unique_id(char)。考虑到每个函数里都有一个static int i 变量,通过外部全局变量的计数就能为每一个不同变量,返回
一个不同的id;代码实现如下:
int g_count = 0;
template<class T>
int get_unique_id(T t)
{
stat