• C++函数重载、覆盖与隐藏的区别


    一.成员函数的重载,其特点:


    (1)在同一个类中;
    (2)函数名字相同;
    (3)参数不同;
    (4)virtual 关键字可有可无。

     
    二.覆盖是指派生类函数覆盖基类函数,其特点:

    (1)位于派生类与基类中;
    (2)函数名字相同;
    (3)参数相同;
    (4)基类函数必须有virtual 关键字

    扩展理解

    1.加virtual关键字的函数是虚函数,它是在基类中定义的,它的引入是因为不确定其派生类的具体行为,函数的覆盖虚函数多态性联系在一起,与父类子类有关

    2.虚函数体现了C++中的多态性

    C++的多态性:在基类的函数前加上virtual关键字,在派生类中重写该函数,在编译的时候,利用迟绑定技术, 也就是编译时并不确定调用哪个函数,运行时就会根据对象的实际类型来确定调用相应的函数。

    3.覆盖函数都是虚函数, 反之不然,有可能是隐藏,即当派生类的函数与基类函数同名不同参数,且基类函数是虚函数时不是覆盖函数。


    三.隐藏是指派生类的函数屏蔽了与其同名的基类函数,有两种情况:
    (1)如果派生类的函数与基类的函数同名参数不同。此时基类的函数将被隐藏(注意别与重载混淆,重载发生在同一个类中);
    (2)如果派生类的函数与基类的函数同名同参数,但基类函数没有virtual 关键字。此时基类的函数被隐藏(注意别与覆盖混淆,覆盖要求基类函数必须有virtual关键字)。

  • 相关阅读:
    containerd
    0/1 nodes are available: 1 node(s) had taint {node-role.kubernetes.io/master: }
    failed to pull image k8s.gcr.io/kube-controller-manage
    journalctl
    How to use Kata Containers and CRI (containerd plugin) with Kubernetes
    kubelet kubeadm kubectl install
    make an overlay with mount
    2018-2-13-不使用数据结构反转栈
    2018-8-10-卷积神经网络全面解析
    论分布式系统内的节点坏盘感知
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3123035.html
Copyright © 2020-2023  润新知