中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++函數與重載知識點有哪些

發布時間:2022-06-02 13:53:52 來源:億速云 閱讀:166 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“C++函數與重載知識點有哪些”,內容詳細,步驟清晰,細節處理妥當,希望這篇“C++函數與重載知識點有哪些”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

    函數的默認(缺省)參數

    1、默認參數的定義

    c++在聲明函數原型的時可為一個或者多個參數指定默認(缺省)的參數值,當函數調用的時候如果沒有傳遞該參數值,編譯器會自動用默認值代替。

    //函數的默認參數 指定x的默認值為10 y為20
    int my_add(int x=10,int y=20)
    {
        return x+y;
    }
    void test02()
    {
        //如果函數傳參 那么各自的默認參數將無效
        cout<<"my_add = "<<my_add(100,200)<<endl;//300
        //如果某個參數未被傳參 將啟用默認值x=100 y使用默認值20
        cout<<"my_add = "<<my_add(100)<<endl;//120
        //x=10  y=20
        cout<<"my_add = "<<my_add()<<endl;//30
    }

    2、默認參數的注意點

    (1)、函數的默認參數從左向右,如果一個參數設置了默認參數,那么這個參數之后的參數都必須設置默認參數

    //函數的默認參數從左向右
    int func01(int x,int y=20,int z=30)
    {
        return x+y+z;
    }
    void test03()
    {
        cout<<func01(100,200)<<endl;//330
        cout<<func01(100)<<endl;//150
        //cout<<func01()<<endl;//err x沒有設置默認參數 必須傳參
    }
    int fun(int a, int b, int c=10);//正確
    int fun(int a, int b=20, int c=10);//正確
    int fun(int a=30, int b=20, int c=10);//正確
    int fun(int a, int b=20, int c);//不正確

    (2)、如果函數聲明和函數定義分開寫,函數聲明和函數定義不能同時設置默認參數

    C++函數與重載知識點有哪些

    (3)、默認參數一般在函數聲明的時候 設置

    fun.cpp

    int func02(int x,int y,int z)
    {
        return x+y+z;
    }

    main.cpp

    //分文件 函數定義處的默認參數 是無效的
    //建議:分文件是 在聲明 給默認參數
    extern int func02(int x,int y=25,int z=35);
    //extern int func02(int x,int y,int z);//err
    void test04()
    {
        cout<<func02(100,200)<<endl;//335
        cout<<func02(100)<<endl;//160
    }

    占位參數

    c++在聲明函數時,可以設置占位參數。

    占位參數只有參數類型聲明,而沒有參數名聲明。

    如果函數的參數只有類型名 沒有形參名,這個參數就是占位參數

    注意:

    由于有類型名 所以 函數調用的時候 必須給占位參數傳參。

    由于沒有形參名 所以 函數內部 是無法使用占位參數。

    1、占位參數 函數內部無法使用

    void func03(int x,int y,int)
    {
        cout<<"x = "<<x<<", y = "<<y<<endl;
        return;
    }
    void test05()
    {
        //func03(10,30,"hehe");//err "hehe"和int類型不符
        func03(10,30,40);
    }

    2、占位參數 可以設置成缺省參數

    void TestFunc01(int a,int b,int=100)
    { 
        //函數內部無法使用占位參數 cout << "a + b = " << a + b << endl; 
    }
    TestFunc01(10, 20,30);//ok
    TestFunc01(10, 20);//ok

    什么時候用,在后面我們要講的操作符重載的后置++要用到這個

    函數重載

    函數重載體現了 c++ 的多態的特性

    函數重載:同一個函數名在不同場景下可以具有不同的含義。

    函數重載意義:方便的使用函數名。

    函數重載的條件: 同一個作用域 參數個數不同 參數類型不同 參數順序不同(重要)

    void myFunc(int a)
    {
        cout<<"int的myFunc"<<endl;
    }
    void myFunc(int a,int b)
    {
        cout<<"int,int 的myFunc"<<endl;
    }
    void myFunc(int a,double b)
    {
        cout<<"int , double的myFunc"<<endl;
    }
    void myFunc(double a,int b)
    {
        cout<<"double,int的myFunc"<<endl;
    }
    void test06()
    {
        myFunc(10);//int
        myFunc(10,20);//int int
        myFunc(10,20.2);//int double
        myFunc(10.1,20);//double int
    }

    C++函數與重載知識點有哪些

    注意:

    1、函數的返回值類型 不能作為 函數重載的依據。

    C++函數與重載知識點有哪些

    2、函數重載和默認參數一起使用,需要額外注意二義性問題的產生

    void myFunc02(int a)
    {
        cout<<"int的myFunc02"<<endl;
    }
    void myFunc02(int a,int b=10)//默認參數
    {
        cout<<"int,int 的myFunc02"<<endl;
    }
    void test07()
    {
        //myFunc02(int a) 和 myFunc02(int a,int b=10)都能識別
        myFunc02(10);//二義性產生
    }

    3、函數重載的原理(了解)

    C++函數與重載知識點有哪些

    讀到這里,這篇“C++函數與重載知識點有哪些”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    c++
    AI

    克东县| 多伦县| 汉中市| 望江县| 东港市| 商南县| 汝南县| 大连市| 咸丰县| 渭南市| 庆安县| 沂水县| 乌鲁木齐县| 凤凰县| 宝鸡市| 拜城县| 大同市| 尚志市| 颍上县| 阜阳市| 阳泉市| 伊金霍洛旗| 临汾市| 杨浦区| 孟村| 新晃| 威信县| 荆门市| 曲周县| 蒲江县| 巢湖市| 灵武市| 罗山县| 沽源县| 柘城县| 金秀| 珠海市| 河津市| 雷波县| 无锡市| 芦山县|