salve volevo porvi in quesito a cui non sono riuscito a dare una risposta

Codice PHP:

class CommunicationDevices
{
public:
virtual void which(){
cout<<"This is a common device..."<<endl;
}
};
class 
MobilePhoneWithGSMSupport: public CommunicationDevices
{
public:
virtual void which(){
cout<<"This is a Mobile Phone...GSM Supported"<<endl;
}
}; 
1)
a cosa serve la parolina "virtual" quando dichiaro il metodo which ? presente solo nella seconda classe?


2)

class MobilePhoneWithGSMSupport: public CommunicationDevices

"ublic communicationdevices" vuole dire che la classe MobilePhoneWithGSMSupport è sotto classe di CommunicationDevices?

3) in c++ ( e anche in java) quanti tipi di polimorfismo esistono?

vi ringrazio anticipatamente.
andrea