欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++超詳細(xì)講解函數(shù)參數(shù)的默認(rèn)值

 更新時(shí)間:2022年05月31日 09:23:13   作者:tianyvHon  
在C++中,定義函數(shù)時(shí)可以給形參指定一個(gè)默認(rèn)的值,這樣調(diào)用函數(shù)時(shí)如果沒有給這個(gè)形參賦值(沒有對應(yīng)的實(shí)參),那么就使用這個(gè)默認(rèn)的值。也就是說,調(diào)用函數(shù)時(shí)可以省略有默認(rèn)值的參數(shù)

1.參數(shù)默認(rèn)值的指定方式

在 C++ 中,可以在函數(shù)聲明時(shí)為參數(shù)提供一個(gè)默認(rèn)值。這樣在函數(shù)調(diào)用時(shí),如果沒有提供函數(shù)參數(shù)值,則使用默認(rèn)值。

e.g. 在函數(shù)聲明時(shí),指定參數(shù)默認(rèn)值

void Demo(int x = 0);
int main(int argc, char* argv[])
{
    Demo();						// 不用提供參數(shù),會將 x = 0 的結(jié)果輸出
    return 0;
}
void Demo(int x)
{
    printf("x = %d\r\n", x);
}

e.g. 沒有函數(shù)聲明,直接在函數(shù)定義時(shí)指定參數(shù)默認(rèn)值

void Demo(int x = 5)
{
    printf("x = %d\r\n", x);
}
int main(int argc, char* argv[])
{
    Demo();
    return 0;
}

注意:參數(shù)的默認(rèn)值必須在函數(shù)聲明中指定

error e.g. 在函數(shù)的聲明和定義中均指定默認(rèn)值

void Demo(int x = 0);
int main(int argc, char* argv[])
{
    Demo();
    return 0;
}
void Demo(int x = 10)
{
    printf("x = %d\r\n", x);
}

error e.g. 僅僅在函數(shù)的定義中指定默認(rèn)值

void Demo(int x);
int main(int argc, char* argv[])
{
    Demo();
    return 0;
}
void Demo(int x = 10)
{
    printf("x = %d\r\n", x);
}

2.參數(shù)默認(rèn)值的指定規(guī)則

參數(shù)的默認(rèn)值必須 從右向左 提供,即 未指定默認(rèn)值的參數(shù)不能出現(xiàn)在指定默認(rèn)值參數(shù)的右邊,正確錯(cuò)誤示例如下所示:

// ok
void Demo(int x, int y = 1; int z = 2);
// error
void Demo(int x = 0, int y, int z = 2);

為什么指定這個(gè)規(guī)則呢?

在 C++ 中調(diào)用函數(shù)時(shí),對于沒有指定默認(rèn)值的參數(shù),是可以不用對其傳入?yún)?shù)的,而且不會報(bào)錯(cuò)。

有一個(gè)如下代碼所示的函數(shù):

void Demo(int x, int y = 1, int z = 2)
{
    printf("x = %d\r\n", x);
    printf("y = %d\r\n", y);
    printf("z = %d\r\n", z);
}

當(dāng)調(diào)用這個(gè)函數(shù)時(shí),可以執(zhí)行下面的代碼進(jìn)行調(diào)用:

int main(int argc, char* argv[])
{
    Demo(0);
    return 0;
}

上面所述的調(diào)用方式是沒有錯(cuò)的,此時(shí)將 0 賦值給 x,參數(shù) y、z 分別使用默認(rèn)值。但是,如果函數(shù)是如下代碼所示的:

void Demo(int x = 0, int y, int z = 2)
{
    printf("x = %d\r\n", x);
    printf("y = %d\r\n", y);
    printf("z = %d\r\n", z);
}

當(dāng)我們用上述同樣的方式進(jìn)行調(diào)用時(shí):

int main(int argc, char* argv[])
{
    Demo(0);
    return 0;
}

此時(shí),代碼是編譯不過的,因?yàn)榫幾g器默認(rèn)把 0 賦值給 x,導(dǎo)致沒有給參數(shù) y 傳入值而報(bào)錯(cuò)。到這里,應(yīng)該就曉得制定這個(gè)規(guī)則的好處了,這樣在調(diào)用函數(shù)的時(shí)候,只需要從左向右傳入?yún)?shù)。如果未指定的默認(rèn)值的參數(shù)出現(xiàn)在指定默認(rèn)值參數(shù)的右邊,那么就必須對指定默認(rèn)值的參數(shù)傳入?yún)?shù)。如下代碼所示的調(diào)用方式均正確:

int main(int argc, char* argv[])
{
    Demo(0);
    Demo(0, 3);
    Demo(0, 3, 4);
    return 0;
}

到此這篇關(guān)于C++超詳細(xì)講解函數(shù)參數(shù)的默認(rèn)值的文章就介紹到這了,更多相關(guān)C++函數(shù)參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C/C++中時(shí)間庫函數(shù)的使用詳解

    C/C++中時(shí)間庫函數(shù)的使用詳解

    這篇文章主要為大家詳細(xì)介紹了C/C++中的時(shí)間相關(guān)知識總結(jié),例如時(shí)間庫函數(shù)的使用以及獲取本地時(shí)間的不同方法,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2022-11-11
  • C語言的隨機(jī)數(shù)rand()函數(shù)詳解

    C語言的隨機(jī)數(shù)rand()函數(shù)詳解

    這篇文章主要為大家詳細(xì)介紹了C語言的隨機(jī)數(shù)rand()函數(shù),使用數(shù)據(jù)庫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • C++排序算法之插入排序解析

    C++排序算法之插入排序解析

    這篇文章主要介紹了C++排序算法之插入排序解析,將數(shù)組分為有序表和無序表,每次從有序表中取出一個(gè)元素,插入到有序表的適當(dāng)位置,每遍歷一次,有序表中元素增加一個(gè),無序表中元素個(gè)數(shù)減少一個(gè),重復(fù)n-1次,完成排序,需要的朋友可以參考下
    2023-10-10
  • VisualStudio2022提交git代碼的方法實(shí)現(xiàn)

    VisualStudio2022提交git代碼的方法實(shí)現(xiàn)

    本文主要介紹了VisualStudio2022提交git代碼的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • C語言實(shí)現(xiàn)按月顯示的日歷

    C語言實(shí)現(xiàn)按月顯示的日歷

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)按月顯示的日歷,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • C++精要分析lambda表達(dá)式的使用

    C++精要分析lambda表達(dá)式的使用

    Lambda表達(dá)式是現(xiàn)代C++在C ++ 11和更高版本中的一個(gè)新的語法糖 ,在C++11、C++14、C++17和C++20中Lambda表達(dá)的內(nèi)容還在不斷更新。 lambda表達(dá)式(也稱為lambda函數(shù))是在調(diào)用或作為函數(shù)參數(shù)傳遞的位置處定義匿名函數(shù)對象的便捷方法
    2022-05-05
  • C語言實(shí)現(xiàn)職工工資管理系統(tǒng)的示例代碼

    C語言實(shí)現(xiàn)職工工資管理系統(tǒng)的示例代碼

    這篇文章主要為大家詳細(xì)介紹了C語言如何實(shí)現(xiàn)職工工資管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C語言示例講解if else語句的用法

    C語言示例講解if else語句的用法

    這篇文章主要介紹C語言中的If Else語句怎么使用,在日常操作中,相信很多人在If Else語句怎么使用問題上存在疑惑,小編查閱了各式資料,整理出使用方法,接下來,請跟著小編一起來學(xué)習(xí)吧
    2022-06-06
  • C++按位異或運(yùn)算符的使用介紹

    C++按位異或運(yùn)算符的使用介紹

    本篇文章對C++按位異或運(yùn)算符的使用進(jìn)行了詳細(xì)的分析介紹。需要的朋友參考下
    2013-05-05
  • Linux頁面置換算法的C語言實(shí)現(xiàn)

    Linux頁面置換算法的C語言實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了Linux頁面置換算法的C語言實(shí)現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12

最新評論