io continuo a non capire in pieno il template... ad esempio:

#include<iostream>
using namespace std;

template<class tipo>
class uno
{
int a;
public:
uno(tipo x){a = x;}
tipo valore(){return a;}
};

template<class tipo>
void f(uno<tipo>& obj, tipo& y)
{
y=obj.valore();
}

int main()
{
int h;
char c;
uno<int>obj1(5);
uno<char>obj2('m');
f(obj1,h);
f(obj2,c);
cout<<h<<endl<<c<<endl;
system("pause");
return 0;
}



Questo è uno dei programmi che ha dato la profe sul template.
Io non capisco la classe tipo... cioè che senso ha dichiarare, richiamare e lavorare su una classe che non si sa nemmeno come è fatta e che metodi ha?

Sicuramente sono io che non ho capito il template... provate ad aiutarmi per favore che l'esame si avvicina