C++ 之 虚函数、多态

来源:互联网 发布:精仿rmb货到付款淘宝 编辑:程序博客网 时间:2024/06/06 00:51

一共三个文件 main.cpp     Person.h     Person.cpp

 

Person.h

#include <iostream>using namespace std;class Person{public:void say(); };class Student: public Person{public:void say();};class Worker: public Person{public:void say();};


 

Person.cpp

#include "Person.h"void Person::say(){cout << "我是普通人" << endl;}void Student::say(){cout << "我是一名学生" << endl;}void Worker::say(){cout << "我是一名工人" << endl;}


 

main.cpp

#include "Person.h"#include <iostream>using namespace std;void sayWho(Person * p){p->say();}int main(){auto pen = new Person();auto stu = new Student();auto wor = new Worker();sayWho(pen);sayWho(stu);sayWho(wor);system("pause");return 0;}


运行结果:

我是普通人

我是普通人

我是普通人

 

上面程序,用父类的指针指向子类对象之后,执行的依然是父类的方法。如果要执行的是子类自身的方法,要怎么办呢?

我们只需修改Person.h

//void say();virtual void say();

运行结果:

我是普通人

我是一名学生

我是一名工人

 

 

只需把父类的say()方法声明为虚函数,虚函数的意思就是这个方法可以被子类重写,当子类重写了父类这个方法,父类指针指向子类对象的时候,执行的方法就是子类自身的方法了,这样就可以很好实现多态。

 


 

 

 

 

0 0