zoukankan      html  css  js  c++  java
  • C++重载、覆盖与隐藏——转载

    http://www.cnblogs.com/qlee/archive/2011/07/04/2097055.html

    成员函数的重载、覆盖与隐藏
    成员函数的重载、覆盖(override)与隐藏很容易混淆,C++程序员必须要搞清楚
    概念,否则错误将防不胜防。
    8.2.1 重载与覆盖
    成员函数被重载的特征:
    (1)相同的范围(在同一个类中);
    (2)函数名字相同;
    (3)参数不同;
    (4)virtual 关键字可有可无。
    覆盖是指派生类函数覆盖基类函数,特征是:
    (1)不同的范围(分别位于派生类与基类);
    (2)函数名字相同;
    (3)参数相同;
    (4)基类函数必须有virtual 关键字。

    8.2.2 令人迷惑的隐藏规则
    这里“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下:
    (1)如果派生类的函数与基类的函数同名,但是参数不同(返回类型不用考虑)。此时,不论有无virtual 关键字,基类的函数将被隐藏(注意别与重载混淆)。
    (2)如果派生类的函数与基类的函数同名,并且参数也相同(返回类型必须相同)且基类函数没有virtual 关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)。

     注意: (2)中如果 返回类型不同,会出现编译错误,同时(2)中条件基函数有virtual 就是覆盖了。

  • 相关阅读:
    poj 2485 Highways 最小生成树
    hdu 3415 Max Sum of MaxKsubsequence
    poj 3026 Borg Maze
    poj 2823 Sliding Window 单调队列
    poj 1258 AgriNet
    hdu 1045 Fire Net (二分图匹配)
    poj 1789 Truck History MST(最小生成树)
    fafu 1181 割点
    减肥瘦身健康秘方
    人生的问题
  • 原文地址:https://www.cnblogs.com/enumhack/p/6402980.html
Copyright © 2011-2022 走看看