Using a cellphone to both text message and talk isn't an example of polymorphism as a programing concept. In C++, polymorphism involves using pointers to objects which don't necessarily match the objects data type to change (morph) the object into many (poly) different types of objects when you need to make certian code use multiple types of objects without writing code for each possible type.
If you have a class "phone" which inherits from class "communicator", all phones are communicators. When you want to perform a function that is common to all communicators, "send communication", for example, you can use functions which only care aboue the communicator core of the phone. Something that knows what a communicator is, but not what a phone is, can still communicate using phone.
The communicator could be a phone, or a letter, or anything else. If you "send communication" on it, the objects should perform any type-specific actions to fulfil general "send communication" action. Perhaps phone then requests input from a microphone and sends it wirelessly to a cell tower, and letter requests input from a pen and goes to the post office.
In either case, you can use either as a "communicator" to "send communication" without having to write seperate code to communicate using a phone, a letter, or shouting long distances. When you do that, the objects appear to be simple "communicators". They become only what you need them to be. Then, when you want to "dial 555-1212", you can view the communicator phone as phone again, and do just that.
Sorry if this wasn't the best explanation. I haven't tought programming in quite a while.
http://www.cplusplus.com/doc/tutorial/tut4-4.html