免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

C++中函數重載、覆蓋與隱藏詳解

C++ 中函數重載、覆蓋與隱藏詳解

站在用戶的角度思考問題,與客戶深入溝通,找到海南州網站設計與海南州網站推廣的解決方案,憑借多年的經驗,讓設計與互聯網技術結合,創造個性化、用戶體驗好的作品,建站類型包括:成都網站設計、成都網站制作、企業官網、英文網站、手機端網站、網站推廣、國際域名空間、虛擬主機、企業郵箱。業務覆蓋海南州地區。

在C++語言中,函數扮演著很重要的角色,不管面向過程設計,還是基于對象設計;不管是面向對象編程,還是基于泛型編程,函數都可以隨處而見。在談論C++中的函數重載、覆蓋和隱藏之前,先回顧下函數的基礎知識。

函數的聲明包括函數的返回值類型,函數名稱,參數列表(參數的類型、參數的個數、參數的順序)。例如,聲明一個兩個整數之和的函數,int iAdd(int iNum1,int iNum2);而函數的定義可以理解為對函數功能的詳盡而準確的解說,通俗點,就是實現函數“how to do?”的效能。兩個整數之和函數的定義如下:

int iAdd(int iNum1,int iNum2)
{
   return (iNum1+iNum2);
}

       仔細觀察函數的聲明和定義,我們不難發現,函數的定義就是除掉函數聲明后面的分號,換之成大括號,在大括號里面實現函數的功能。雖然在某些情況下,可以容許不對函數進行聲明,只需要對函數定義,就能調用函數了。但是,強烈建議養成先聲明函數,然后再定義函數,最后在調用函數的良好習慣。關于函數的基礎知識,暫時論述到這。

       現在,進入本文的主題。函數重載(function overload),它是在同一可訪問區域內部聲明具有幾個不同參數列(參數的類型、參數的個數,參數的順序)的相同函數名稱的一種機制,函數的調用是根據不同的參數類型和最佳匹配原則確定最終使用那個函數。函數覆蓋(function override)是在派生類中完全一致性地聲明了父類中的函數,區別在于函數定義中的大括號之間的內容可以不同,并且該函數在父類中有關鍵字virtual標識;函數隱藏(function hide)是指在派生類中函數與父類函數完全一致,但是在父類中該函數沒有關鍵字virtual標識,或者是指在派生類中函數與父類的函數名相同,參數列表不一樣,父類中的該函數可有也可無關鍵字virtual標識。

函數重載的特征:相同的范圍內(在同一個類中),函數的名稱相同,參數列表不同,virtual關鍵字可有可無;函數覆蓋的特征:在不同的范圍內(父類與派生類),函數的名字相同,參數列表相同,父類函數必須有關鍵字virtual;函數隱藏的特征:在不同范圍內(父類與派生類),函數的名字相同,參數列表相同,但是父類函數沒有關鍵字virtual或者,參數列表不相同,父類函數中virtual關鍵字可有可無。

為了直觀地理解,請看下面的代碼。

#include<iostream>
using namespace std;
class A
{
public:
   void print(int iNum)
   {
     cout<<"在類A中,參數類型是整型"<<endl;
   }
   void print(float fNum)
   {
     cout<<"在類A中,參數類型是單精度浮點型"<<endl;
   }
 virtual void print(void)
   {
     cout<<"在類A中,參數類型是空類型"<<endl;
   }
};
class B:public A
{
public:
   void print( void)
   {
     cout<<"在類B中,參數類型是空類型"<<endl;
   }
 
   void print(int iNum)
   {
     cout<<"在類B中,參數類型是整型"<<endl;
   }
 };
int main()
{
   A a;
   B b;
  //函數的重載
   a.print();
   a.print(1);
   a.print(1.0f);
  //函數的覆蓋
   b.print();
 //函數的隱藏
   b.print(1);
  return 0;
}

      運行結果是:

   在類A中,參數類型是空類型
   在類A中,參數類型是整型
   在類A中,參數類型是單精度浮點型
   在類B中,參數類型是空類型
   在類B中,參數類型是整型

     通過上述代碼和運行的結果,簡明地知道了函數重載,覆蓋和隱藏。恰當里利用這些特性,可以編寫出更加有效、清晰和精簡的代碼。                           

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

網站欄目:C++中函數重載、覆蓋與隱藏詳解
當前URL:http://m.newbst.com/article42/pjciec.html

成都網站建設公司_創新互聯,為您提供外貿建站定制開發網站改版搜索引擎優化企業建站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

外貿網站制作