C++提高:多态

Posted 流楚丶格念

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++提高:多态相关的知识,希望对你有一定的参考价值。

题目

定义一个父类 A,定义一个子类 B,B 中重载 A 中的函数方法,实现多

代码

在这里插入图片描述

#include <iostream>
#include <string>
using namespace std;
//定义一个 A 类
class A {
public:
	virtual void func()
	{
		cout << "call father func" << endl;
	}
	virtual ~A()
	{
		cout << "call ~base" << endl;
	}
};
//定义一个 B 类继承 A 类
class B : public A {
public:
	virtual void func()
	{
		cout << "call child func" << endl;
	}
	virtual ~B()
	{
		cout << "call ~child" << endl;
	}
};
int main()
{
	A* p = new B; 
	p->func();
	delete p;
	return 0;
}

知识回顾

多态

多态指同一个实体同时具有多种形式。它是面向对象程序设计(OOP)的一个重要特征。如果一个语言只支持类而不支持多态,只能说明它是基于对象的,而不是面向对象的。C++中的多态性具体体现在运行和编译两个方面。运行时多态是动态多态,其具体引用的对象在运行时才能确定。编译时多态是静态多态,在编译时就可以确定对象使用的形式。

多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。

多态的特点

  1. 多态实现方法:虚函数、抽象类、覆盖、模版(重载和多态无关)
  2. 用 virtual 关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。
  3. 存在虚函数的类都有一个一维的虚函数表叫做虚表。类的对象有一个指向虚表开始的虚指针。虚表是和类对应的,虚表指针是和对象对应的。
  4. 多态性是一个接口多种实现,是面向对象的核心。分为类的多态性和函数的多态性。
  5. 多态用虚函数来实现,结合动态绑定。
  6. 纯虚函数是虚函数再加上= 0
  7. 抽象类是指包括至少一个纯虚函数的类。

以上是关于C++提高:多态的主要内容,如果未能解决你的问题,请参考以下文章

C++的动态多态与静态多态

C++之STL

C++之封装继承和多态

C++的探索路14多态与虚函数之基础篇

JAVA-面向对象2--继承 ,多态

C++多态公有继承