最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

e.g. 沒(méi)有函數(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í),對(duì)于沒(méi)有指定默認(rèn)值的參數(shù),是可以不用對(duì)其傳入?yún)?shù)的,而且不會(huì)報(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)用方式是沒(méi)有錯(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í),代碼是編譯不過(guò)的,因?yàn)榫幾g器默認(rèn)把 0 賦值給 x,導(dǎo)致沒(méi)有給參數(shù) y 傳入值而報(bào)錯(cuò)。到這里,應(yīng)該就曉得制定這個(gè)規(guī)則的好處了,這樣在調(diào)用函數(shù)的時(shí)候,只需要從左向右傳入?yún)?shù)。如果未指定的默認(rèn)值的參數(shù)出現(xiàn)在指定默認(rèn)值參數(shù)的右邊,那么就必須對(duì)指定默認(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++類中的常量介紹

    C++類中的常量介紹

    const數(shù)據(jù)成員只在某個(gè)對(duì)象生存期內(nèi)是常量,而對(duì)于整個(gè)類而言卻是可變的,因?yàn)轭惪梢詣?chuàng)建多個(gè)對(duì)象,不同的對(duì)象其const數(shù)據(jù)成員的值可以不同
    2013-10-10
  • C++實(shí)現(xiàn)詞法分析器

    C++實(shí)現(xiàn)詞法分析器

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)詞法分析器的相關(guān)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • c++實(shí)現(xiàn)LinkBlockedQueue的問(wèn)題

    c++實(shí)現(xiàn)LinkBlockedQueue的問(wèn)題

    這篇文章主要介紹了c++實(shí)現(xiàn)LinkBlockedQueue的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • C++手寫內(nèi)存池的案例詳解

    C++手寫內(nèi)存池的案例詳解

    這篇文章主要介紹了C++手寫內(nèi)存池的案例詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • c++ 面向?qū)ο蟮念愒O(shè)計(jì)

    c++ 面向?qū)ο蟮念愒O(shè)計(jì)

    類的設(shè)計(jì)在于用恰到好處的信息來(lái)完整表達(dá)一個(gè)職責(zé)清晰的概念,恰到好處的意思是不多也不少,少了,就概念就不完整;多了,就顯得冗余,累贅,當(dāng)然特例下,允許少許的重復(fù),但是,這里必須要有很好的理由
    2017-07-07
  • C++實(shí)現(xiàn)的一個(gè)可以寫遞歸lambda的Y函數(shù)

    C++實(shí)現(xiàn)的一個(gè)可以寫遞歸lambda的Y函數(shù)

    這篇文章主要介紹了C++實(shí)現(xiàn)的一個(gè)可以寫遞歸lambda的Y函數(shù),在Y函數(shù)的幫助,這個(gè)lambda表達(dá)是可以成功看到自己,然后遞歸調(diào)用的,需要的朋友可以參考下
    2014-07-07
  • 關(guān)于大小端、位域的一些概念詳解

    關(guān)于大小端、位域的一些概念詳解

    我們常用的x86結(jié)構(gòu)都是小端模式,而大部分DSP,ARM也是小端模式,不過(guò)有些ARM是可以選擇大小端模式。所以對(duì)于上面的maxHeight是應(yīng)該以小端模式來(lái)存放,具體情況請(qǐng)看下面兩表
    2013-10-10
  • Qt使用QPainter繪制3D立方體

    Qt使用QPainter繪制3D立方體

    這篇文章主要為大家詳細(xì)介紹了Qt使用QPainter繪制3D立方體,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • VC6.0打開(kāi)文件以及向工程中添加文件時(shí)程序崩潰自動(dòng)退出解決方法

    VC6.0打開(kāi)文件以及向工程中添加文件時(shí)程序崩潰自動(dòng)退出解決方法

    vc6.0程序中,點(diǎn)擊打開(kāi)文件以及向工程中添加文件時(shí),程序竟然崩潰自動(dòng)退出了,不知什么原因,安裝相同的vc程序,本本竟然出現(xiàn)此緣故
    2013-01-01
  • C++使用string的大數(shù)加法運(yùn)算(1)

    C++使用string的大數(shù)加法運(yùn)算(1)

    這篇文章主要為大家詳細(xì)介紹了C++使用string的大數(shù)加法運(yùn)算,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09

最新評(píng)論

中阳县| 巫溪县| 翁源县| 防城港市| 夏邑县| 广河县| 长宁区| 甘泉县| 马边| 大港区| 涿州市| 乌鲁木齐市| 洞口县| 罗源县| 桃园县| 镇巴县| 太和县| 临夏县| 昌乐县| 玉田县| 上饶市| 新巴尔虎左旗| 临海市| 麻栗坡县| 舒兰市| 陆川县| 新绛县| 大石桥市| 达孜县| 鹰潭市| 蒙山县| 阳曲县| 德清县| 临沂市| 乐山市| 钟山县| 江阴市| 阿荣旗| 渭南市| 历史| 陆河县|