Salve ragazzi sto avendo un problema utilizzando le funzioni virtuali ( polimorfismo run-time ) . 
Il problema lo riscontro con la sizeof dei miei oggetti . 
Sto studiando dell'ereditarietà multipla con le classi "Person" , "Student" , "Employee" e "Student-Employee" . Le relazioni sono : student e employee derivano da person e student-employee deriva da student ed employee .
Sono presenti funzioni virtuali e quindi un aumento di 4byte della sizeof , dovuto al puntatore alla vtable e inoltre un aumento di 4byte dovuto al puntatore all'istanza di classe person contenuto in student ed employee ( ereditarierà virtuale ) .
Le mie classi e il main seguono :
class Person {
public:
	char no[5];
	Person(){
		cout << "p" <<endl;
	}
	virtual void DoSomething(){
		cout << "1"<<endl;
	}
	void inserisci_nome(char insnm[5]){
		strcpy(no, insnm);
	}
};
class Student : virtual public Person {
public:
	Student(){
		cout << "s" <<endl;
	}
	void DoSomething(){
		cout << "2"<<endl;
	}
};
class Employee : virtual public Person {
public:
	Employee(){
		cout << "e" <<endl;
	}
	void DoSomething(){
		cout << "3"<<endl;
	}
};
class Student_Employee : public Student,
	public Employee {
public:
	Student_Employee(){
		cout << "se" <<endl;
	}
	void DoSomething(){
		cout << "4"<<endl;
	}
};
int main(){
	Person P ;
	Student S;
	Employee E;
	Student_Employee SE;
	cout << sizeof(P)<<endl;
	cout << sizeof(S)<<endl;
	cout << sizeof(E)<<endl;
	cout << sizeof(SE)<<endl;
system("pause");
	return 0;
}
I risultati che ottengo sono :
P->12
S->20
E->20
SE->24
Non riesco a giustificare tali valori delle sizeof. Spero qualcuno più esperto di me possa aiutarmi.Grazie in anticipo .