分享

C++提高:多态

 流楚丶格念 2022-01-14

文章目录

题目

定义一个父类 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. 抽象类是指包括至少一个纯虚函数的类。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多