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
- 【C/C++】C++之private虚函数
- C++:多态之虚函数
- c函数之【时间函数】
- c函数之【数据结构函数】
- c函数之【随机数函数】
- c函数之【信号函数】
- c函数之【记录函数】
- c函数之【环境变量函数】
- c函数之【动态函数】
- c函数之【其他函数】
- C语言之函数
- C函数之strfry
- C函数之memstr
- c函数之offsetof
- C语言之函数
- C/C++之函数
- C语言之函数
- C-[之函数指针]
- Simple-TODO: 一个简易的 todo 程序 - web.py 中文教程
- 百度笔试题——开发测试工程师(深圳)
- Android源码分析:AudioEffect
- [System.Web.Script.Services.ScriptService]引用问题
- UILable自适应内容大小
- C++ 之 虚函数、多态
- 初学ssh之Spring 02
- lua5.2 tips
- hdu 5011 Game(2014 西安网络赛)
- JAVA获取中文名字的首字母
- java设计模式
- mysql 创建定时器
- QUML建模第一层:角色-业务图实现愿景(2)
- AudioEffect源码解析