zoukankan      html  css  js  c++  java
  • 3.多态性

    1.概述:

      - 多态指同样的消息被不同类型的对象接收时导致不同的行为。

      - 多态的类型:重载多态、强制多态、包含多态、参数多态。

        * 重载多态:通过重载其参数列表实现

        * 强制多态:指将一个变元的类型加以变化,以符合一个函数或操作的要求。

        * 包含多态:类族中定义于不同类中的同名成员函数的多态行为,主要是通过虚函数来实现。

        * 参数多态:模板

      - 多态实现:编译时多态、运行时多态

    2.运算符重载

      - 运算符重载规则:

        * 除少数几个外,全部可以重载,并且只能重载C++中已有的运算符(. * :: ?:)

        * 重载之后的运算符的优先级和结合性都不会改变

        * 运算符重载是针对新类型数据的实际需要,对原有运算符进行适当的改造。一般来讲,重载的功能应当与原有功能相类似,不能改变原有运算符的操作对象个数,同时至少要有一个操作对象时自定义类型。

      - 重载语法:

        返回类型  operator  运算符(形参表){}

      - 运算符重载为成员函数

      - 运算符重载为非成员函数

    3.虚函数:虚函数是动态绑定的基础,必须是非静态成员函数。经过派生之后,在类族中就可以实现运行过程中的多态。

      - 声明语法:virtual  函数类型  函数名(形参表)

      - 虚函数声明只能出现在类定义中的函数原型声明中,而不能在成员函数实现的时候

      - 运行中多态的3个条件:

        * 类之间满足赋值兼容规则

        * 声明虚函数

        * 由成员函数来调用或者通过指针、引用来访问虚函数

      - 虚析构函数:解决释放不同类的内存释放问题

    4.纯虚函数与抽象类

      抽象类是为了抽象和设计的目的而建立。抽象类是带有纯虚函数的类,为了通过它多态的使用其中的成员函数。无法实例化一个抽象类的对象,只能通过继承机制,生成抽象类的非抽象派生类,然后再实例化。 

      - 纯虚函数与一般虚函数的原型在书写格式上的不同就在于后面加了“=0”,基类中可以不再给出函数的实现部分。

      - C++的类类型分为两类,多态类型和非多态类型。多态类型指有虚函数的类,非多态指其他。

      - 虚函数:通过虚表实现

      - 重载是方法名相同,参数列表不同;重写是函数声明部分相同,不一样的实现部分,必须要通过继承。

    5.参数化多态:将程序所处理的对象的类型参数化,使得一段程序可以用于处理多种不同类型的对象

      - 函数模板:template

      - 类模板:使用类模板使用户可以为类定义一种模式,使得类中的某些数据成员,某些成员函数的参数,返回值或局部变量能取任意类型

  • 相关阅读:
    【leetcode】92. 反转链表 II
    【leetcode】91. 解码方法
    【leetcode】89. 格雷编码
    【leetcode】86. 分隔链表
    【leetcode】82. 删除排序链表中的重复元素 II
    为什么选择react
    React 全家桶实现后台管理界面
    前后端同构
    浅谈React前后端同构防止重复渲染
    由React引发的前后端分离架构的思考
  • 原文地址:https://www.cnblogs.com/Mr-ox/p/6476965.html
Copyright © 2011-2022 走看看