cookie和session區別,重寫、重載和隱藏的區別

 2023-11-30 阅读 38 评论 0

摘要:重載:是指同一可訪問區內被聲明幾個具有不同參數列(參數的類型、個數、順序)的同名函數,根據參數列表確定調用哪個函數,重載不關心函數返回類型。 class A{public:void fun(int tmp);void fun(float tmp); // 重載 參數類型不同(相
  1. 重載:是指同一可訪問區內被聲明幾個具有不同參數列(參數的類型、個數、順序)的同名函數,根據參數列表確定調用哪個函數,重載不關心函數返回類型。
    class A{public:void fun(int tmp);void fun(float tmp); // 重載 參數類型不同(相對于上一個函數)void fun(int tmp, float tmp1); // 重載 參數個數不同(相對于上一個函數)void fun(float tmp, int tmp1); // 重載 參數順序不同(相對于上一個函數)int fun(int tmp); // error: 'int A::fun(int)' cannot be overloaded 錯誤:**注意重載不關心函數返回類型**
  1. 隱藏:是指派生類的函數屏蔽了與其同名的基類函數,主要只要同名函數,不管參數列表是否相同,基類函數都會被隱藏。
    #include <iostream>using namespace std;class Base{public:void fun(int tmp, float tmp1) { cout << "Base::fun(int tmp, float tmp1)" << endl; }};class Derive : public Base{public:void fun(int tmp) { cout << "Derive::fun(int tmp)" << endl; } // 隱藏基類中的同名函數};int main(){Derive ex;ex.fun(1); // Derive::fun(int tmp)ex.fun(1, 0.01); // error: candidate expects 1 argument, 2 providedreturn 0;}

說明:上述代碼中 ex.fun(1, 0.01); 出現錯誤,說明派生類中將基類的同名函數隱藏了。若是想調用基類中的同名函數,可以加上類型名指明 ex.Base::fun(1, 0.01);,這樣就可以調用基類中的同名函數。

  1. 重寫(覆蓋):是指派生類中存在重新定義的函數。函數名、參數列表、返回值類型都必須同基類中被重寫的函數一致,只有函數體不同。派生類調用時會調用派生類的重寫函數,不會調用被重寫函數。重寫的基類中被重寫的函數必須有 virtual 修飾
   #include <iostream>using namespace std;class Base{public:virtual void fun(int tmp) { cout << "Base::fun(int tmp) : " << tmp << endl; }};class Derived : public Base{public:virtual void fun(int tmp) { cout << "Derived::fun(int tmp) : " << tmp << endl; } // 重寫基類中的 fun 函數};int main(){Base *p = new Derived();p->fun(3); // Derived::fun(int) : 3return 0;}

cookie和session區別、重寫和重載的區別:

  • 范圍區別:對于類中函數的重載或者重寫而言,重載發生在同一個類的內部,重寫發生在不同的類之間(子類和父類之間)。
  • 參數區別:重載的函數需要與原函數有相同的函數名、不同的參數列表,不關注函數的返回值類型;重寫的函數的函數名、參數列表和返回值類型都需要和原函數相同,父類中被重寫的函數需要有 virtual 修飾。
  • virtual 關鍵字:重寫的函數基類中必須有 virtual關鍵字的修飾,重載的函數可以有 virtual 關鍵字的修飾也可以沒有。

隱藏和重寫,重載的區別:

  • 范圍區別:隱藏與重載范圍不同,隱藏發生在不同類中。
  • 參數區別:隱藏函數和被隱藏函數參數列表可以相同,也可以不同,但函數名一定相同;當參數不同時,無論基類中的函數是否被 virtual 修飾,基類函數都是被隱藏,而不是重寫。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/188383.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息