Lecture 7 - Polymorphism

Lecture 7 - Polymorphism - Monday,January30th Polymorphism...

Info iconThis preview shows pages 1–6. Sign up to view the full content.

View Full Document Right Arrow Icon
Monday, January 30th  Polymorphism Virtual Functions Virtual Destructors Pure Virtual Functions 
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Polymorphism Consider a function that accepts a  Person  as an  argument void LemonadeStand( Person &p) { cout << “Hello “ << p.getName(); cout << “How many cups of ”; cout << “lemonade do you want?”; } Can we also pass a  Student  as a  parameter to it? void main(void) { Person p; LemonadeStand(p); } We know we can do this: void main(void) { Student s; LemonadeStand(s); } But can we do this?
Background image of page 2
Polymorphism Consider a function that accepts a  Person  as an  argument void LemonadeStand( Person &p) { cout << “Hello “ << p.getName(); cout << “How many cups of ”; cout << “lemonade do you want?”; } Can we also pass a  Student  as a  parameter to it? Person I’d like to buy some  lemonade. We only serve people.  Are you a person? Yes. I’m a person.  I have a  name and everything. class Person { public: string getName(void); ... private: string m_sName; int m_nAge; }; Ok.  How many cups of  lemonade would you  like? Mom. I think that’s  Lucy Lu! Shhhh.
Background image of page 3

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Student Polymorphism Consider a function that accepts a  Person  as an  argument void LemonadeStand( Person &p) { cout << “Hello “ << p.getName(); cout << “How many cups of ”; cout << “lemonade do you want?”; } Can we also pass a  Student  as a  parameter to it? I’d like to buy some  lemonade. We only serve people.  Are you a person? Prove it to us! class Student : public Person { public: // new stuff: int getStudentID(); private: // new stuff: int m_nStudentID; }; Hmm. I’m a student but  as far as I know, all  students are people!  Well, you can see by my  class declaration  that all  students  are just a more  specific sub-class of  people . public Person But do you have a  name like a person? Since I’m based on a  Person , I  have every-thing a Person  has… Including a name!  Look! class Person { public: string getName(void); ... private: string m_sName; int m_nAge; Well, as long as you’re a  person, we can serve  you. Mom. It’s a  NERD!!! Uh huh. getName
Background image of page 4
class Person { public: string getName(void) { return m_name; } ... private: string m_name; int m_age; }; Polymorphism The idea behind  polymorphism  is that once I define a function that accepts a (reference or pointer to a)  Person void SayHi( Person &p) { cout << “Hello “ << p.getName(); } main() {      Person  p (“Eric”,18);     SayHi( p ); } float GPA = 1.6; Student s (“David”,19,  GPA ); SayHi( s ); class Student : public Person { public: // new stuff: int getGPA(); private: // new stuff: float m_gpa; Not only can I pass  Person   variables  to that class… But I can also pass  any variable  that  was derived from a Person!
Background image of page 5

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Image of page 6
This is the end of the preview. Sign up to access the rest of the document.

Page1 / 52

Lecture 7 - Polymorphism - Monday,January30th Polymorphism...

This preview shows document pages 1 - 6. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online