scusami.. ho inserito una funzione friend per controllare quando avviene la chiamata ai costruttori di copia..
ma praticamente... non li chiama
mi sa che occorre inserire per forza const.. ci ho provato ma mi da errore...

codice:
#include <iostream.h>
#include <string.h> // classe club (base) 
class club {
protected:
	char squadra[80]; 
	char serie[2]; 
public: 
	club(char *sq, char *se);
	club(const club &l);
};
//FINE dichiarazioni


club::club(char *sq, char *se)  {
	strcpy(squadra, sq); 
	strcpy(serie,se); 

}

club::club(const club &l) {
	strcpy(squadra, l.squadra); 
	cout << "costruttore di copia club";
}
//FINE club




//classe engage
class engage { 
protected:
	int anno_inizio; 
	int anno_fine; 
	double inga; 
public: 
	engage(int ai, int af, double ing);
	engage(const engage &o);
	double getengage();
}; 
//FINE dichiarazioni


engage::engage(int ai, int af, double ing) {
	anno_inizio = ai; 
	anno_fine = af; 
	inga = ing; 
}

engage::engage(const engage &o) {
	anno_inizio = o.anno_inizio; 
	anno_fine = o.anno_fine;
	inga = o.inga;
	cout << "costruttore di copia engage";
}

double engage::getengage() {
	return (inga / (anno_fine-anno_inizio)); 
}
//FINE engage





//classe giocatore
class giocatore : public club, public engage { 
protected:
 char nome[50]; 
 char cognome[50]; 
 char data_nascita[20]; 
 char luogo_nascita[50]; 

public: 
 friend void stampa_engage(giocatore obj); 
 giocatore(char *sq, char *se, int ai, int af, double ing,
 		  char *n, char *c,char *dn, char *ln);
 
 giocatore(giocatore &ogg);

 char *getname();
 char *getcogn();

 friend void funzione(giocatore obj);

};
//FINE dichiarazioni

void funzione(giocatore obj){
	cout << obj.anno_fine;
}

giocatore::giocatore(char *sq, char *se, int ai, int af, double ing, 
					 char *n, char *c,char *dn, char *ln) : 
												club(sq, se),  engage(ai, af, ing) {

	strcpy(nome,n); 
	strcpy(cognome,c); 
	strcpy(data_nascita,dn); 
	strcpy(luogo_nascita,ln); 
}

giocatore::giocatore( giocatore &ogg) : club(ogg.squadra, ogg.serie), 
engage(ogg.anno_inizio, 
	   ogg.anno_fine,
	   ogg.inga) {

	strcpy(nome,ogg.nome);
	strcpy(cognome,ogg.cognome);
	strcpy(data_nascita, ogg.data_nascita); 
	strcpy(luogo_nascita, ogg.data_nascita);
}

char* giocatore::getname() {
	return nome;
}

char* giocatore::getcogn() {
	return cognome;
}

void stampa_engage(giocatore obj){ 
cout << "il suo ingo annuo è di: " << obj.getengage(); 
} 
//FINE giocatore

int main() {

giocatore maldini("Milan", "A", 2000, 2006, 
                  5000000, "Paolo", "Maldini",
                  "12 Aprile 1975", "Milano");
	


	cout << maldini.getcogn() << endl;
	cout << maldini.getengage() << endl;
	cout << maldini.getname() << endl;

	funzione(maldini);

	return 0;
}