zoukankan      html  css  js  c++  java
  • c++ 类覆盖方法中的协变返回类型

    c++ 类覆盖方法中的协变返回类型

    在C++中,只要原来的返回类型是指向类的指针或引用,新的返回类型是指向派生类的指针或引用,覆盖的方法就可以改变返回类型。这样的类型称为协变返回类型(Covariant returns type).

    协变(covariant),如果它保持了子类型序关系≦。该序关系是:子类型≦基类型。
    逆变(contravariant),如果它逆转了子类型序关系。

    参数逆变:正是因为需要符合里氏替换法则,方法中的参数类型声明时必须符合逆变(或不变),以让子类方法可以接收更大的范围的参数(处理能力增强);而不能声明为协变,子类方法可接收的范围是父类中参数类型的子集(处理能力减弱)。
    返回值协变:如果结果类型是逆变的,那子类方法的处理能力是减弱的,不符合里氏替换。因此返回值类型声明时必须符合协变(或不变)
     
    返回类型的协变(covariance)指返回类型是接口或委托定义返回类型的子类,
    参数类型的逆变(contravariance)是指实现的参数类型是接口或委托定义的参数类型的父类。
     
     
  • 相关阅读:
    CSRF
    PHP XXE漏洞
    jumpserver安装与部署
    ELK
    docker pull下来的镜像放哪儿了?
    MobSF 框架安装使用部署
    加密流量分析
    Pόlya定理-学习笔记
    所有区间异或的和的 一个加强
    计算一个序列有多少个不同的01子序列
  • 原文地址:https://www.cnblogs.com/lsgxeva/p/7684545.html
Copyright © 2011-2022 走看看