函数重载(overload)、函数覆盖(override)

函数重载(overload)、函数覆盖(override),第1张

函数重载(overload)、函数覆盖(override),第2张

“overload”翻译过来就是:超载,过载,重载,超出标准负荷;“override”翻译过来是:重置,覆盖,使原来的失去效果。
  先来说说重载的含义,在日常生活中我们经常要清洗一些东西,比如洗车、洗衣服。尽管我们说话的时候并没有明确地说用洗车的方式来洗车,或者用洗衣服的方式来洗一件衣服,但是谁也不会用洗衣服的方式来洗一辆车,否则等洗完时车早就散架了。考试大提示我们并不要那么明确地指出来就心知肚明,这就有重载的意思了。在同一可访问区内被声名的几个具有不同参数列的(参数的类型、个数、顺序不同)同名函数,程序会根据不同的参数列来确定具体调用哪个函数,这种机制叫重载,重载不关心函数的返回值类型。这里,“重载”的“重”的意思不同于“轻重”的“重”,它是“重复”、“重叠”的意思。例如在同一可访问区内有:
  ① double calculate(double);
  ② double calculate(double,double);
  ③ double calculate(double, int);
  ④ double calculate(int, double);
  ⑤ double calculate(int);
  ⑥ float calculate(float);
  ⑦ float calculate(double);
  六个同名函数calculate,①②③④⑤⑥中任两个均构成重载,⑥和⑦也能构成重载,而①和⑦却不能构成重载,因为①和⑦的参数相同。
  覆盖是指派生类中存在重新定义的函数,其函数名、参数列、返回值类型必须同父类中的相对应被覆盖的函数严格一致,覆盖函数和被覆盖函数只有函数体(花括号中的部分)不同,当派生类对象调用子类中该同名函数时会自动调用子类中的覆盖版本,而不是父类中的被覆盖函数版本,考试大,提示这种机制就叫做覆盖。
  下面我们从成员函数的角度来讲述重载和覆盖的区别。
  成员函数被重载的特征有:
  1) 相同的范围(在同一个类中)
  2) 函数名字相同
  3) 参数不同
  4) virtual关键字可有可无
  覆盖的特征有:
  1) 不同的范围(分别位于派生类与基类)
  2) 函数名字相同
  3) 参数相同
  4) 基类函数必须有virtual关键字
  比如,在下面的程序中:
  #include
  using namespace std;
  class Base
  {
  public:
  void f(int x){ cout

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 函数重载(overload)、函数覆盖(override)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情