国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C++技能樹(shù)】原來(lái)比C方便這么多 --缺省參數(shù)、函數(shù)重載、引用講解

這篇具有很好參考價(jià)值的文章主要介紹了【C++技能樹(shù)】原來(lái)比C方便這么多 --缺省參數(shù)、函數(shù)重載、引用講解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

?【C++技能樹(shù)】原來(lái)比C方便這么多 --缺省參數(shù)、函數(shù)重載、引用講解

Halo,這里是Ppeua。平時(shí)主要更新C語(yǔ)言,C++,數(shù)據(jù)結(jié)構(gòu)算法......感興趣就關(guān)注我吧!你定不會(huì)失望。

??個(gè)人主頁(yè):主頁(yè)鏈接

??算法專欄:專欄鏈接

?????我會(huì)一直往里填充內(nèi)容噠!

??LeetCode專欄:專欄鏈接?

????目前在刷初級(jí)算法的LeetBook 。若每日一題當(dāng)中有力所能及的題目,也會(huì)當(dāng)天做完發(fā)出

??代碼倉(cāng)庫(kù):Gitee鏈接

??點(diǎn)擊關(guān)注=收獲更多優(yōu)質(zhì)內(nèi)容??

目錄

1.缺省參數(shù):

2.函數(shù)重載:

3.引用:

完結(jié)撒花:

【C++技能樹(shù)】原來(lái)比C方便這么多 --缺省參數(shù)、函數(shù)重載、引用講解?

1.缺省參數(shù):

在C++中

如果想要在一個(gè)函數(shù)不給定具體參數(shù)的情況下使用一個(gè)默認(rèn)值就可以用到缺省參數(shù)這個(gè)概念.

具體用法如下在聲明/定義時(shí)給定默認(rèn)值即可,

int add(int a=0,int b=1);
int add(int a,int b)
{
    return a+b;
}
int main()
{
    cout<<add(12);
}

例如這里就給定了第一個(gè)參數(shù).而沒(méi)有給第二個(gè)參數(shù),所以默認(rèn)為1,所以A+B的值就變成了13

注意!!

int add(int a=0,int b=1);
int add(int a=0,int b=1)
{
    return a+b;
}

不能在聲明與定義同時(shí)給出默認(rèn)參數(shù),即使值是一樣,這樣也是錯(cuò)的.

所以只能在一個(gè)地方(聲明/定義)給定默認(rèn)值.一般在聲明時(shí)給出

可以全部給定默認(rèn)值,也可以只給一部分.但只能從右到左連續(xù)的給出.

int add(int a,int b=1,int c=2)
{
    return a+b+c;
}
int main()
{
    cout<<add(12);
}

這樣就屬于跳著給,也是不可以的

int add(int a=1,int b,int c=2)
{
    return a+b+c;
}

2.函數(shù)重載:

在C中,若想要使用使用一個(gè)add函數(shù)返回兩數(shù)相加的結(jié)果.因?yàn)檫@個(gè)兩數(shù)可以是浮點(diǎn)數(shù),整數(shù)等.若我們想要準(zhǔn)確的表示兩個(gè)數(shù)據(jù)相加.就得定義若干個(gè)異名函數(shù).

int addi(int a,int b)
{
    return a+b;
}
double addd(double a,double b)
{
    return a+b;
}

例如這里定義了addi表示兩個(gè)整數(shù)相加,又定義了addd表示兩個(gè)浮點(diǎn)數(shù)相加.

那如果我是寫(xiě)庫(kù)的作者,我需要讓一個(gè)僅需要相加功能的調(diào)用者去了解這么多函數(shù)的名字,僅用來(lái)區(qū)分他們相加的數(shù)據(jù)類(lèi)型嘛?

這樣的工作效率顯然是非常低的,所以C++改進(jìn)了他的方法.

int add(int a,int b)
{
    return a+b;
}
double add(double a,double b)
{
    return a+b;
}

這兩個(gè)同名函數(shù),因?yàn)閰?shù)類(lèi)型的不同,所以在C++中可以同時(shí)存在.?

這就是函數(shù)重載的概念.

區(qū)分兩個(gè)函數(shù)是否相同不再僅通過(guò)名字,而是通過(guò)參數(shù)個(gè)數(shù)/類(lèi)型/類(lèi)型順序來(lái)區(qū)分.

返回值不同不作為區(qū)分函數(shù)重載的規(guī)則,因?yàn)槟阏{(diào)用該函數(shù)的時(shí)候可以不適用返回值。

void add(int a,double b); 類(lèi)型順序

void add(double a,int b); 類(lèi)型順序 參數(shù)個(gè)數(shù)

void add(double a,int b,int c); 參數(shù)個(gè)數(shù)

?為什么能進(jìn)行區(qū)分呢?

因?yàn)樵贑++中,在編譯階段,會(huì)這樣對(duì)函數(shù)進(jìn)行命名.

第一個(gè)函數(shù)被命名為:addid 表示參數(shù)類(lèi)型為int 與 double

第二個(gè)函數(shù)被命名為:adddi 表示參數(shù)類(lèi)型為double 與 int

第三個(gè)函數(shù)被命名為: adddii 表示參數(shù)類(lèi)型為double、int、int?

使用重載函數(shù)并不會(huì)導(dǎo)致程序運(yùn)行變慢,因?yàn)楦淖兠值氖率窃诰幾g階段就完成了,程序運(yùn)行階段直接去尋找對(duì)應(yīng)的函數(shù).所以并不需要有這種擔(dān)心.

3.引用:

先來(lái)看看我們最開(kāi)始學(xué)編程的時(shí)候?qū)W習(xí)的代碼

int a=0;

int b=a;

這段代碼很簡(jiǎn)單,但他在內(nèi)存里做的事相信很多uu們并不知道.我們現(xiàn)在來(lái)看看

【C++技能樹(shù)】原來(lái)比C方便這么多 --缺省參數(shù)、函數(shù)重載、引用講解

這段代碼是將a指向的數(shù)據(jù)又拷貝了一份放在b中,也就是a、b變成了兩個(gè)獨(dú)立的個(gè)體.他們的共同點(diǎn)也就是值相同.

我們可以打印他的地址來(lái)看看

?int a=0;

?int b=a;

?printf("a:%p \nb:%p",&a,&b);

【C++技能樹(shù)】原來(lái)比C方便這么多 --缺省參數(shù)、函數(shù)重載、引用講解?

結(jié)果如圖所示,說(shuō)明我們說(shuō)的是對(duì)的.

那我們?cè)賮?lái)看看C++新加入的引用特點(diǎn).

?int a=0;

?int &b=a;

?printf("a:%p \nb:%p",&a,&b);

僅在b前面加上一個(gè)&(注意!!!加在a前表示取地址)

再打印地址,看看會(huì)發(fā)生什么.

【C++技能樹(shù)】原來(lái)比C方便這么多 --缺省參數(shù)、函數(shù)重載、引用講解

?他們的內(nèi)存地址相同了!也就是現(xiàn)在的內(nèi)存模型應(yīng)該長(zhǎng)這樣

【C++技能樹(shù)】原來(lái)比C方便這么多 --缺省參數(shù)、函數(shù)重載、引用講解

?a b都表示這塊內(nèi)存地址的一個(gè)別名.除了名字不同,其他都是相同的.也就是改變a也會(huì)改變b

這段代碼同樣的非常簡(jiǎn)單,但是這樣寫(xiě)是錯(cuò)的,因?yàn)?strong>形參的改變不影響實(shí)參,我們僅需這樣改動(dòng)?

void swap(int a,int b)
{
    int tmp=a;
    a=b;
    b=tmp;
}
int main()
{
    int a=2;
    int b=3;
    swap(a,b);
    cout<<"a:"<<" "<<a<<endl;
    cout<<"b: "<<b<<endl;
}

【C++技能樹(shù)】原來(lái)比C方便這么多 --缺省參數(shù)、函數(shù)重載、引用講解??

?在函數(shù)調(diào)用參數(shù)前加上&,表示對(duì)實(shí)參的引用,這樣他們使用的是同一塊內(nèi)存空間.也就可以直接改變了

void swap(int &a,int &b)
{
    int tmp=a;
    a=b;
    b=tmp;
}
int main()
{
    int a=2;
    int b=3;
    swap(a,b);
    
}

【C++技能樹(shù)】原來(lái)比C方便這么多 --缺省參數(shù)、函數(shù)重載、引用講解?

?

完結(jié)撒花:

??本篇博客的內(nèi)容【原來(lái)比C方便這么多 --缺省參數(shù)、函數(shù)重載、引用講解】已經(jīng)結(jié)束。

??若對(duì)你有些許幫助,可以點(diǎn)贊、關(guān)注、評(píng)論支持下博主,你的支持將是我前進(jìn)路上最大的動(dòng)力。

??若以上內(nèi)容有任何問(wèn)題,歡迎在評(píng)論區(qū)指出。若對(duì)以上內(nèi)容有任何不解,都可私信評(píng)論詢問(wèn)。

??諸君,山頂見(jiàn)!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-435465.html

到了這里,關(guān)于【C++技能樹(shù)】原來(lái)比C方便這么多 --缺省參數(shù)、函數(shù)重載、引用講解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【C++初階(二)】缺省參數(shù)&函數(shù)重載

    【C++初階(二)】缺省參數(shù)&函數(shù)重載

    目錄 前言 1. 缺省參數(shù) ?1.1 什么是缺省參數(shù) ?1.2 缺省參數(shù)的分類(lèi) ? ? ?1.2.1 全缺省參數(shù) ?1.2.2 半缺省參數(shù) 2. 函數(shù)重載 ?2.1 什么是函數(shù)重載 ?2.2 缺省參數(shù)與函數(shù)重載 ?2.3 函數(shù)重載的使用 ?3. C++支持函數(shù)重載的原因 ?總結(jié) ? ? ? ? 在學(xué)習(xí)C語(yǔ)言時(shí)我們就會(huì)發(fā)現(xiàn),C語(yǔ)言中存在的

    2024年02月07日
    瀏覽(28)
  • 【C++初階】缺省參數(shù)與函數(shù)重載

    【C++初階】缺省參數(shù)與函數(shù)重載

    ? ? C++祖師爺在用C寫(xiě)代碼的時(shí)候,就覺(jué)得有些地方用著很不方便,于是就在C++設(shè)計(jì)了缺省參數(shù),在實(shí)現(xiàn)一些功能時(shí),用這個(gè)就方便了許多。 缺省參數(shù)是聲明或定義函數(shù)時(shí)為 函數(shù)的參數(shù)指定一個(gè)缺省值 。在調(diào)用該函數(shù)時(shí): ? ? ? ? ? ? a.如果沒(méi)有指定實(shí)參則采用該形參的缺省

    2023年04月22日
    瀏覽(23)
  • 【初識(shí)C++】(缺省參數(shù)和函數(shù)重載)

    【初識(shí)C++】(缺省參數(shù)和函數(shù)重載)

    缺省參數(shù)是在函數(shù)的聲明中給定參數(shù)一個(gè)指定的值。 如果傳參沒(méi)有給定參數(shù),那就按照聲明中默認(rèn)的缺省值,如果給定了參數(shù),那就按照給定的參數(shù)值。 比如: 對(duì)于Func函數(shù)如果沒(méi)有給定參數(shù),那就按照默認(rèn)的缺省值來(lái)賦值。如果給定了參數(shù),那就按照給定的參數(shù)進(jìn)行賦值。

    2024年02月01日
    瀏覽(18)
  • 【C++初階】C++入門(mén)——缺省參數(shù)、函數(shù)重載

    【C++初階】C++入門(mén)——缺省參數(shù)、函數(shù)重載

    ?缺省參數(shù)是 聲明或定義函數(shù)時(shí)為函數(shù)的參數(shù)指定一個(gè)缺省值 。在調(diào)用該函數(shù)時(shí),如果沒(méi)有指定實(shí)參則采用該形參的缺省值,否則使用指定的實(shí)參。 ?上面代碼在 fun 函數(shù)的形參部分給了缺省值10,這意味著在調(diào)用 fun 函數(shù)的時(shí)候可以傳參,也可以不傳參,如果傳參了那形參

    2024年02月11日
    瀏覽(18)
  • 【開(kāi)懂C++】命名空間 函數(shù)重載 缺省參數(shù)

    【開(kāi)懂C++】命名空間 函數(shù)重載 缺省參數(shù)

    在編寫(xiě)C語(yǔ)言代碼時(shí),當(dāng)工程較大時(shí),很容易產(chǎn)生變量命名沖突的情況——一般有兩種沖突的情況 1.變量名與庫(kù)中的函數(shù)名、沖突 。 2.工程模塊化搭建時(shí)不同文件的命名沖突 。 而C++為了優(yōu)化這一缺陷,提出了命名空間的概念。 命名空間使用的是 namespace ,命名空

    2023年04月18日
    瀏覽(23)
  • C++中命名空間、缺省參數(shù)、函數(shù)重載

    C++中命名空間、缺省參數(shù)、函數(shù)重載

    目錄 1.命名空間 2.缺省參數(shù) 3.函數(shù)重載 在C++中定義命名空間我們需要用到namespace,后面跟上命名空間的名字,結(jié)構(gòu)框架有點(diǎn)類(lèi)似結(jié)構(gòu)體(如圖所示) 上面的代碼我一一進(jìn)行講解: 1.我們先來(lái)說(shuō)第三行和main函數(shù)中的代碼意思,第三行代碼的意思是展開(kāi)std庫(kù)的空間,std是

    2024年01月23日
    瀏覽(23)
  • 【C++】命名空間、缺省參數(shù)和函數(shù)重載

    在一個(gè)大型的項(xiàng)目中,不同成員寫(xiě)的程序中會(huì)不可避免的帶來(lái) 命名沖突 的問(wèn)題,這種情況下命名空間可以很好的解決這種命名沖突大的問(wèn)題,它可以用來(lái)避免不同的庫(kù)或模塊中的名稱(name)發(fā)生沖突。 名稱可以是變量、函數(shù)、類(lèi)、結(jié)構(gòu)、枚舉等等。此外,命名空間可以讓我

    2024年02月17日
    瀏覽(20)
  • 【C++初階(二)】缺省參數(shù)以及函數(shù)重載

    【C++初階(二)】缺省參數(shù)以及函數(shù)重載

    ??博主CSDN主頁(yè):杭電碼農(nóng)-NEO?? ? ?專欄分類(lèi):C++初階之路? ? ??代碼倉(cāng)庫(kù):NEO的學(xué)習(xí)日記?? ? ??關(guān)注我??帶你學(xué)習(xí)排序知識(shí) ? ???? 寫(xiě)C語(yǔ)言代碼的時(shí)候 特別是在寫(xiě)數(shù)據(jù)結(jié)構(gòu)時(shí): 經(jīng)常忘記傳函數(shù)的參數(shù) 或者當(dāng)前不需要什么參數(shù) C++增加了缺省參數(shù)來(lái)解決這個(gè)問(wèn)題 而為了

    2024年02月12日
    瀏覽(19)
  • 【C++雜貨鋪】缺省參數(shù)、函數(shù)重載

    【C++雜貨鋪】缺省參數(shù)、函數(shù)重載

    ?缺省參數(shù)是 聲明或定義函數(shù)時(shí)為函數(shù)的參數(shù)指定一個(gè)缺省值 。在調(diào)用該函數(shù)時(shí),如果沒(méi)有指定實(shí)參則采用該形參的缺省值,否則使用指定的實(shí)參。 ?上面代碼在 fun 函數(shù)的形參部分給了缺省值10,這意味著在調(diào)用 fun 函數(shù)的時(shí)候可以傳參,也可以不傳參,如果傳參了那形參

    2024年02月16日
    瀏覽(18)
  • C++:命名空間,缺省參數(shù),函數(shù)重載,引用,內(nèi)聯(lián)函數(shù)

    C++:命名空間,缺省參數(shù),函數(shù)重載,引用,內(nèi)聯(lián)函數(shù)

    個(gè)人主頁(yè) : 個(gè)人主頁(yè) 個(gè)人專欄 : 《數(shù)據(jù)結(jié)構(gòu)》 《C語(yǔ)言》《C++》 本篇博客作為C++知識(shí)總結(jié),我們來(lái)認(rèn)識(shí)命名空間,缺省參數(shù),函數(shù)重載,引用,內(nèi)聯(lián)函數(shù)。 那么在介紹命名空間時(shí),我們先用C++的方式打印\\\"hello world\\\"。 其中,using namespace std; 就是一種命名空間的使用。 在

    2024年02月11日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包