c++中的函數重載

來源:互聯網
上載者:User

標籤:c++   函數重載   重載   


c++中的函數重載

  • 什麼是函數重載
    重載函數是函數的一種特殊情況,為方便使用,C++允許在同一範圍中聲明幾個功能類似的同名函數,但是這些同名函數的形式參數(指參數的個數、類型或者順序)必須不同,這組函數被稱為重載函數。

  • 函數重載的作用
    重載函數常用來實現功能類似而所處理的資料類型不同的問題,能減少函數名的數量,提高程式的可讀性。

  • 重載函數的構成說明
    定義一個類,添加一系列函數名相同的函數,但參數形式各有不同,測試一下能否構成重載。

#include <iostream>using namespace std;class Base{    public:        void func(int a){cout << "this is "<< a <<endl;}        void func(string a){cout << "this is " << a <<endl;}            void func(int a,int b){cout << "this is "<< a <<endl;}        void func(int a,string b){cout << "this is "<< a <<endl;}        //錯誤的重載1        int  func(int a,int b){cout << "this is "<< a <<endl;}          //錯誤的重載2        void  func(const int a,int b){cout << "this is "<< a <<endl;}        //錯誤的重載3        void func(int b,int a){cout << "this is "<< a <<endl;}          };int main(){    Base b;    b.func(22);    b.func("test");    return 0;}                                                        

??以上程式執行編譯會報錯:

‘void Base::func(int)’ cannot be overloaded ...

??即函數不能構成重載,原因分別為:

  • 傳回值不同,不能構成函數重載。
    對應錯誤1:想想也是,執行函數調用時,只知道傳入的參數,是無法預知要返回什麼類型的值的,所以自然不知道該調用哪一個函數。

  • 形參是const修飾的常值不能構成函數重載。
    對應錯誤2:說明編譯時間二者對應的符號是一致的。注意,如果形參是引用或指標是可以構成重載的。即下面的情況:

class Base{    public:        void func(int &a){cout << "this is "<< a <<endl;}        void func(const int &a){cout << "this is "<< a <<endl;}}
  • 參數類型相同,只是命名不同,不能構成重載。
class Base{    public:        void func(int a){cout << "this is "<< a <<endl;}        void func(int b){cout << "this is "<< b <<endl;}}
  • 備忘
    函數重載是c++比較重要的概念,涉及比較偏門的使用情境,比如參數有const修飾,就會引來比較蛋疼的疑惑,這裡整理的還不夠充分,後期將逐步進行整理和完善。

著作權聲明:本文為csdn博主[applebite](http://blog.csdn.net/applebite) 原創文章,轉載請註明出處,侵權必究。

c++中的函數重載

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.