C++中的多态
1.多态的概念
在面向对象语言中,接口的多种不同实现方式即为多态。具体来说就是去完成某个行为,当调用不同的对象去完成时会产生不同的状态。
例如:在车站买票这个行为,学生去购买学生票就是半价;普通人去买票则是全价。
2.多态的定义即实现
2.1多态定义的构成条件
多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了Person。Person对象买票全价,Student对象买票半价。
构成多态的两个条件:
- 调用函数的对象必须是指针或者引用。
- 被调用的函数必须是虚函数,且完成了虚函数的重写。
2.2什么是虚函数
虚函数:被virtual关键字修饰的类的成员函数称为虚函数, (virtual不能加在内联函数和静态成员函数之前) 继承后可以被重写。
作用:实现多态性
class Person {
public:
virtual void BuyTicket() {
cout << "买票-全价" << endl;}
};
2.3虚函数的重写
虚函数的重写:派生类中有一个跟基类的完全相同虚函数,我们就称子类的虚函数重写了基类的虚函数,(完全相同是指:函数名、参数、返回值都相同)另外虚函数的重写也叫作虚函数的覆盖。
#include<iostream>
using namespace std;
class Person {
public:
virtual void BuyTicket() {
//定义为虚函数
cout << "全票" << endl;
}
};
class Student :public Person {
public:
virtual void BuyTicket() {
//重写基类虚函数
cout << "学生半价"<<endl;
}
};
class Soldier :public Person {
public:
virtual void BuyTicket(