3-19(c++基礎)

1、C++入門ios

關鍵字:c++一共有63個關鍵字。c++

一、命名空間;面試

在c/c++中,變量,函數和類都是大量存在的,這些變量,函數,類的名稱都是做用域全局中,名字同樣可能形成衝突。使用命名空間的目的是對標識符的名稱進行本地化。安全


namespace關鍵字就是處理命名空間的ide

命名空間定義:函數

namespace 空間名字 {};{}裏面爲命名空間的成員,也就是這些成員屬於該空間裏面。這些成員變量不能隨意使用,使用須要根據命名空間使用規則來進行使用。性能

如  namespace N1優化

{spa

int a;指針

int add(int ret)

{

return 0;

}

}

命名空間還能夠嵌套命名空間。


命名空間的使用:3種方法。

第一種:加命名空間名稱及做用域限定符。

如N1::a,::爲做用域限定符。

第二種:使用using將命名空間成員引入。

如 using n1::a,這樣a就能夠隨便使用了。

using爲展開。

第三種:展開命名空間全部成員

如:using namespace N1;.,這樣N1裏面全部成員均可以直接使用。


二、輸入/輸出

使用cout標準輸出(控制檯)和cin標準輸入(鍵盤)時候i,必須使用頭文件<iostream>,以及std標準命名空間。

using namespace std;表示c++全部東西均可以使用,std是c++全部東西名稱,using展開,就能夠隨意使用。。

cin>>a;//輸入a

cin>>a>>b;輸入a,b

cout<<a<<b<<end1;表示輸出a,b,而且換行,end1表示換行。



三、缺省參數(備胎參數)

缺省參數就是指聲明或定義時爲函數的參數指定一個默認值,再調用該函數時,若是沒有給實參賦值,則使用該形參參數,不然使用實參。

分類:

全缺省參數:就是全部參數就賦值了;

半缺省參數:部分參數沒有賦值。


注意:半缺省參數必須從右往左依次來給出,不能間隔賦值。

缺省參數不能在聲明和定義同時出現。

缺省參數必須是常量或全局變量

c語言不支持。


四、函數重載

在c++中同一做用域聲明幾個功能相似的同名函數,這些同名函數的形參列表(參數個數/類型/順序)必須不一樣。

函數重載與返回值無關,若是隻有函數返回值不一樣,不能說是函數重載。


爲何c++能夠函數重載,而c語言不行,主要由於c++具備名字修飾規則。



extern"C"

有時候在C++工程裏面可能須要將某些函數按照c的風格來編譯,在函數前面加extern"C",意思是告訴編譯器,將該函數按照c規則來編譯



五、引用

引用不是新定義一個變量,而是給已存在變量取一個別名,編譯器不會爲引用變量開闢內存空間,他和他引用的變量公共同一塊空間。


格式:引用類型&  引用變量名(對象名)=引用實體

int& ra=a;   ra就爲a的引用,爲其變量名。

注意:引用類型必須和引用實體是同種類型。


引用特性:

引用在定義時必須初始化。

一個變量能夠有多個引用。


常引用:

const int a=10;

int& ra=1;      //錯誤寫法,由於a是隻讀,ra爲可讀可寫,這樣會改變a的值

const int& ra=a;    正確寫法。

引用的權限得小於等於被引用實體得權限。

權限不適應與普通變量之間的 賦值,適應與引用和指針。

非const 能夠賦值給const和非const,const只能賦值給const。


使用場景:

作參數:

作返回值:

若是一個函數要引用做爲返回值, 就必須要求其返回變量在出了這個做用域之後還存在,若是不存在,就不能使用引用做爲返回值。

使用引用返回能夠減小建立臨時變量,提升效率。

static聲明得變量  生命週期會變長,會在靜態區。  static定義的變量 只會執行一次,只會在定義時執行一次。


傳參、傳引用效率比較:

以指做爲參數或者返回值類型,在傳參和返回期間,函數不會直接傳遞實參或者變量自己直接返回,而是傳遞實參或返回變量的一份臨時拷貝,,所以效率很是低。




引用和指針區別:

引用在定義時必須初始化;    指針不須要;

引用在初始化引用一個實體後,就不能在引用其餘實體;而指針能夠在任什麼時候候指向任何一個同類型的實體;

沒有NULL 的引用;有NULL指針。

在sizeof中的含義不一樣:引用的結果爲引用實體的類型大小,,但指針始終時地址空間所佔字節數4/8.

引用自加即引用的實體加1;指針自加即指針向後偏移一個類型的大小。

有多級指針,可是無多級引用。

訪問實體類型不一樣:指針須要解引用,,引用編譯器本身處理

引用相比指針更安全一些。


六、內聯函數

inline修飾的函數叫作內聯函數,編譯時c++編譯器會在調用內聯函數的地方展開,,沒有函數壓棧的開銷,內聯函數提高程序運行的效率。


特性:

inline是以空間換時間的作法,,省去了調用 函數的開銷,,因此代碼很長的函數不適合作內聯函數。

inline對編譯器而言,只是一種建議,編譯器會自動優化,選擇合適的。

inline的聲明和定義應該在一塊兒。


面試考點

宏的優缺點:

優勢:

加強代碼的複用性。

提升性能。

缺點:

不方便調試。

致使代碼的可讀性差,可維護性差,容易誤會。

沒有類型安全的檢查。

c++哪些技術能夠代替宏:

常量定義——》const

函數定義——》inline函數。

相關文章
相關標籤/搜索