首页 > 学院 > 开发设计 > 正文

多态的实现--虚表

2019-11-08 19:46:49
字体:
来源:转载
供稿:网友

虚函数:

虚函数--类的成员函数前面加virtual关键字,则这个成员函数称为虚函数。虚函数重写--当在子类的定义了一个与父类完全相同的虚函数时,则称子类的这个函数重写(也称覆盖)了父类的这个虚函数。

#include<iostream>using namespace std;class Person{public:	virtual void BuyTickets()	{		cout << " 买全价票" << endl;	}PRotected:	string _name; };class Student : public Person{public:	virtual void BuyTickets()	{		cout << " 买半价票 " << endl;	}protected:	int _num;};void Fun(Person& p){	p.BuyTickets();}void Test(){	Person p;	Student s;	Fun(p);	Fun(s);}int main(){	Test();	return 0;}

多态:

所谓多态,其实就是“多种形态”。

C++中虚函数的主要作用就是实现多态。简单说父类的指针/引用调用重写的虚函数,当父类指针/引用指向父类对象时调用的是父类的虚函数,指向子类对象时调用的是子类的虚函数。

虚函数表:

虚函数表是通过一块连续内存来存储虚函数的地址。这张表解决了继承、虚函数(重写)的问题。在有虚函数的对象实例中都存在一张虚函数表,虚函数表就像一张地图,指明了实际应该调用的虚函数函数。

#include<iostream>using namespace std;class Base{public:	virtual void func1()	{}	virtual void func2()	{}private:	int a;};void Test1(){	Base b1;}int main(){	Test1();	return 0;}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表