Ciao a tutti sono nuovo... parto subito con un quesito
Per motivi universitari mi sto ricimentando sul C++ dopo 3 anni e mi sono trovato un pò spiazzato a recuperare "tutte" le mie conoscenze... Ciò non toglie che mi sono sorti dei grossi dubbi ad esempio guardando questo pezzo di programma... Mi sapete dare qualche spiegazione a riguardo? pls

#include<iostream>
using namespace std;
template<unsigned int N, class T> //Questo è buio totale... cos'è? il template cosa fa?
class A
{
T a[N];
int c;
public:
A() : c(0){} //Questa dichiarazione del costruttore? Conoscevo solo il tipo A(){...}
void p (T x){a[c++]=x;} //Il parametro formale cos'è? Una variabile di tipo T?
T g(){return a[--c];} //Questo?... un metodo di tipo T?!
void print()
{
for(int i=0;i<c;i++)
cout<<a[i]<<"";
cout<<endl;
}
};