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函數。