溫馨提示×

溫馨提示×

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

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

c++入門之基本概念

發(fā)布時間:2020-08-04 15:43:03 來源:網(wǎng)絡(luò) 閱讀:207 作者:be_better_ 欄目:編程語言
    c++由c語言衍生而來,最大的特點(diǎn)就是它是一門面向?qū)ο蟮恼Z言,面向過程(c)即需要我們?nèi)グ凑詹襟E去一步一步寫代碼,而c++提供的面向?qū)ο髾C(jī)制幫助我們更有效更方便的開發(fā)。
     1.關(guān)鍵字:根據(jù)版本的不同關(guān)鍵字的個數(shù)有所不同,c中有我們熟悉的32個關(guān)鍵字,而在c++98這個版本中有63個關(guān)鍵字,很多都是和c中關(guān)鍵字類似,以后遇到會細(xì)說
     2.命名空間

概念:使用namespace關(guān)鍵字對標(biāo)識符的名字本地化,以避免命名沖突或名字污染

命中空間的定義方式:namespace N1,命名空間是可以嵌套且可以有相同名稱的命名空間出現(xiàn),編譯器在編譯時會將其合并為一個命名空間,而在命名空間中定義的變量作用域只限于這個命名空間。

命名空間的三種使用方式:N1::a、using N1::b、using namespace N1;
3.缺省參數(shù):缺省參數(shù)就是在定義或聲明函數(shù)時為函數(shù)的參數(shù)指定一個默認(rèn)值,若沒有傳遞實參則用默認(rèn)值。
分類:全缺省參數(shù)(每個參數(shù)都有默認(rèn)值),半缺省參數(shù)

  • 注意:在半缺省參數(shù)定義時必須從右向左賦值,這種情況下傳遞的實參優(yōu)先匹配最左邊的缺省參數(shù)。
  • 缺省參數(shù)不能在函數(shù)定義和聲明中同時定義,最好在聲明。
    4.重載函數(shù):在同一作用域中定義幾個功能類似的函數(shù),其參數(shù)列表(參數(shù)個數(shù),參數(shù)類型,參數(shù)順序)必須不同才能構(gòu)成重載函數(shù)。
    在這里就要說一下為什么在c++中可以構(gòu)成函數(shù)重載而在c語言中不行了,c中編譯器對函數(shù)的命名是在函數(shù)名前加,c++根據(jù)編譯器的不同有不同的命名規(guī)則,但相同點(diǎn)是都對函數(shù)的參數(shù)列表在命名時進(jìn)行了修飾,當(dāng)然,在c++工程中也可以根據(jù)自己的需求加入“extern”關(guān)鍵字讓編譯器當(dāng)作c風(fēng)格來編譯,如:
    #### extern "C" int Add(int x,int y);這里編譯器就按照C的風(fēng)格進(jìn)行編譯了。
    5.引用(&):引用不是新定義了一個變量而是給以有的變量起了一個別名,與所引用的變量公用一塊內(nèi)存空間。
    引用作為函數(shù)參數(shù)和函數(shù)的返回值
  • 作為函數(shù)返回值時,離開函數(shù)作用域后,其棧上空間已經(jīng)還給系統(tǒng),因此不能用棧上的空間作為引用類型返回。如果以引用類型返回,返回值的生命周期必須不受函數(shù)的限制(即比函數(shù)生命周期長)。
  • 引用做參數(shù)效率比傳值傳參效率高,因為沒有空間的開辟,但引用在底層上的實現(xiàn)與指針相同,即傳址和引用的效率差不多,但引用比指針用起來更加安全。
  • 傳引用時若不想修改實參則用const修飾的引用
  • const int &&a=10;不是多級引用,叫做右值引用。
    6.內(nèi)聯(lián)函數(shù):以inline修飾的函數(shù)叫做內(nèi)聯(lián)函數(shù),編譯時C++編譯器會在調(diào)用內(nèi)聯(lián)函數(shù)的地方展開,沒有函數(shù)壓棧的開銷,內(nèi)聯(lián)函數(shù)提升程序運(yùn)行的效率。
    那么內(nèi)聯(lián)函數(shù)和宏函數(shù)在功能上時類似的,那為什么還要引入內(nèi)聯(lián)函數(shù)呢?在c中使用宏函數(shù)時需要對所有變量帶上括號,不然表達(dá)式所求結(jié)果可能會會與預(yù)期有所不同,這樣就增加了代碼的風(fēng)險性,其二宏是在預(yù)處理是進(jìn)行替換,很不方便調(diào)試,沒有類型檢測的過程,而內(nèi)聯(lián)函數(shù)則在編譯時進(jìn)行替換,所以相對宏函數(shù)更加安全。
  • 在c++中用const定義的常量替換宏,用內(nèi)聯(lián)函數(shù)替換宏函數(shù)。
  • 內(nèi)聯(lián)函數(shù)是用空間換時間的做法,所以當(dāng)代碼很長或有遞歸時不建議使用內(nèi)聯(lián)函數(shù),inline關(guān)鍵字對于編譯器也只是一個建議,當(dāng)不適合作為內(nèi)聯(lián)函數(shù)時編譯器就會忽略內(nèi)聯(lián)。
  • inline不建議分開定義和聲明,內(nèi)聯(lián)函數(shù)時具有文件作用域的。
    7.auto關(guān)鍵字(c++11)
    auto修飾的關(guān)鍵字編譯器會自動推倒其類型。
  • auto在一行定義多個變量時類型必須相同。
  • auto不能作為函數(shù)的參數(shù)也不可以定義數(shù)組
    auto的第二個用法:基于范圍的for循環(huán)
    int arr[]={1,2,3,4,5};
    for(auto & e : arr)
    e*=2;
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI