C++的一些知識要點記錄

來源:互聯網
上載者:User

常量指標
  const int *p / int const *p
指標常量
  int * const p
常引用
  const int &p = a;

數組
1. 定義時初使化,花括弧內給出常量表;
2. 如果給定的個數不足,則對其餘元素初使化為0;
3. 靜態數組,C++自動初使化為0;

指標數組 int *pArray[2] = {NULL};
數組指標
int nArray[5] = {0};
int (*pArray)[5] = nArray;
(int (*pArray)[5])[2] = {nArray, nArray};

函數表 : 傳回值、函數名、參數表(類型、個數)

函數的調用機制:
1. 壓入調用現場;
2. 產生傳回值對象,壓入其地址;
3. 壓入入參/出參
4. 調用指定函數
5. 向出參填值,並向eax儲存傳回值
6. 各參數出棧,並將eax所指向的局部對象傳回值賦給傳回值對象;

編譯器會根據不同的函數重稱和參數表來選擇重載函數,具體調用過程為:
1. 尋找最符合函數名和參數表類型的函數;
2. 否則,尋找一個模板函數,執行個體化後進行調用;
3. 否則,尋找一個可通過參數類型轉換後,能夠匹配的函數;
若以上過程失敗,則函數調用失敗,若某個過程出現二義性,也調用失敗;

函數的入口地址:函數名/函數地址
編譯器調用函數時不區分函數名和函數地址,我認為函數名最終都會映射為函數地址;

函數調用的目標,就是找到入口地址,傳遞參數;

int simple();
函數名: simple
函數地址:&simple
函數間址:*&simple
函數指標:( (int (*)()) &simple )()

函數原型 int simple();
函數原型類型:typedef int simple() SIMPLE_FUNC;
函數指標類型:typedef int (*SIMPLE_PFUN)();

函數指標變數的一些定義方法:
int (*pfun)() = &simple;
SIMPLE_FUNC *pfun = &simple;
SIMPLE_PFUN pfun = &simple;

函數指標數組:
int (*pFunArray[2])() = {&simple, &simple};
SIMPLE_PFUN pFuncArray[2] = {&simple, &simple};

==========================================================================================

建構函式及類型轉換

1. 進行對象初使化賦值操作時,C++為對象定義了一個預設的複製建構函式;
   當然,使用者可以定義更多的建構函式,以提供初使化時可進行從多種類型的賦值初使化;

2. 當進行對象的賦值操作時,C++為對象定義了預設的賦值函數;
   當然,使用者可以定義更多的operate =運算子多載版本;

3. 編譯器在進行對象演算法運算、賦值運算、函數調用時,都會進行隱式的類型轉換:
   包括 基本類型/類 -> 類的轉換,通過建構函式版本實現;
        類 -> 基本類型 的轉換,通過類型轉換函式實現;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.