各種區別

內聯函數和宏的區別:


1.內聯函數在運行時可調試,而宏定義不可以;

2.編譯器會對內聯函數的參數類型做安全檢查或自動類型轉換(同普通函數),而宏定義則不會;

3.內聯函數可以訪問類的成員變量,宏定義則不能;

4.在類中聲明同時定義的成員函數,自動轉化爲內聯函數。

 

 

------------------------------------------------------------------------------------------------

指針和引用的區別:

指針其實也是一種值傳遞,不過它傳的是地址而已,引用傳遞是傳入棧中偏移
這可以從反彙編後看出來
指針是把變量的地址入堆棧,函數開始出棧後,只能改變指針改向的地址處的內容,而不能改變指針的值!!
而引用傳遞壓入的是偏移,在函數開始出棧後直接將棧+偏移來操作傳入參數,所以引用使用的是同一個對象,不需要額外產生對象的拷貝,提高了效率。

 

引用:變量的別名;不分配內存空間;定義時必須同時初始化;一旦初始化後其值不能改變;
指針:是一個變量;分配內存空間;定義時可以不必初始化;

發佈了37 篇原創文章 · 獲贊 1 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章