C++筆記

結構體內存對齊

  1. 什麼叫內存對齊:編譯器爲每個“數據單元”安排在某個合適的位置上。
  2. 爲什麼要對齊:更快地將數據提取到寄存器中。如果內存對齊,cpu在尋址時,可以一個總線週期提取到數據;如果數據存儲不是內存對齊,那麼cpu尋址會耗費更多的總線週期,並且還需要合併寄存器的值。這樣導致了尋址耗時。

C++作用域標識符::
用於對與局部變量同名的全局變量進行訪問
用於表示類的成員

函數的多態性
靜態的多態
在編譯時確定函數的入口地址(靜態聯編)
例如:函數重載
動態的多態
在運行時確定函數的入口地址(動態聯編)
例如:虛函數

name managling(改編)與extern “C”
name managling :編譯器對重載函數進行函數名稱改變
extern “C”: 按照C語言的方式編譯
#ifdef __cplusplus
#endif

參數默認值
1. 函數沒有聲明時,在函數定義中指定形參的默認值
2. 函數既有定義又有聲明時,聲明指定後,定義後就不能再指定默認值
3. 默認值的定義必須遵守從右到左的順序,如果某個形參沒有默認值,則它左邊的參數就不能有默認值
4. 函數調用時,實參與形參按從左到右的順序進行匹配
5. 帶默認形參值的函數的二義性

引用:

  1. 引用主要作用參數傳遞、返回值
  2. 引用的概念:
    引用不是變量
    引用僅僅只是變量的別名
    引用沒有自己獨立的空間
    引用要與它所引用的變量共享空間
    對引用所做的改變實際上是對它所引用的變量的改變
    引用在定義的時候要進行初始化
    引用一經初始化,不能重新指向其他變量
  3. const引用:指向const對象的引用
    const int ival = 1024;
    const int& refval = ival;
  4. 引用作爲返回值
int& add(int a, int b){
    int sum;
    num = a + b;
    return num;
}
int main(){
    int n = add(3, 4);//num 被釋放了,但將值賦值給了n
    int& n2 = add(5, 6);//num 被被釋放了,n2 是num的別名

    cout << n << endl; // 值爲7
    cout << n2 << endl;//值爲不確定值
}

引用的另一個作用是用於返回引用的函數
函數返回引用的一個主要目的是可以將函數放在賦值運算符的左邊。
注意:不能返回對局部變量的引用
5. 引用與指針的區別:
引用訪問一個變量是直接訪問,而指針是間接訪問。
引用是一個變量的別名,本身不單獨分配內存空間,而指針有自己的內存空間。
引用一經初始化不能再引用其他變量,而指針可以。
儘可能使用引用,不得已時使用指針。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章