lecture7

Lecture7 - Monday April 24 th • Polymorphism • Virtual Functions • Virtual Destructors • Pure Virtual Functions Polymorphism Consider a

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

View Full Document Right Arrow Icon

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

View Full DocumentRight Arrow Icon

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

View Full DocumentRight Arrow Icon

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

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

Unformatted text preview: Monday, April 24 th • Polymorphism • Virtual Functions • Virtual Destructors • Pure Virtual Functions 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? 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. 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 class Person { public: string getName(void); ... private: string m_sName; int m_nAge; }; Polymorphism Any time you have a function that takes a (reference to) a superclass as an argument... void SayHi( Person &p ) { cout << “Hello “ << p.getName(); } main() { } Person c; SayHi( c ); You may also pass in a subclass to the function. Student s; SayHi( s ); class Student : public Person { public: // new stuff: int getStudentID(); private: // new stuff: int m_nStudentID; }; Person Student Polymorphism Why is this? Well a Student IS a Person. Everything a Person can do, it can do. void SayHi( Person &p ) { cout << “Hello “ << p.getName();p....
View Full Document

This note was uploaded on 10/20/2009 for the course CS 32 taught by Professor Davidsmallberg during the Winter '08 term at UCLA.

Page1 / 43

Lecture7 - Monday April 24 th • Polymorphism • Virtual Functions • Virtual Destructors • Pure Virtual Functions Polymorphism Consider a

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

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