第九章 引用

2021-07-04 08:17:33 字數 1169 閱讀 9834

引用擁有指標的所有功能,只是語法更加的簡單

1:引用就是別名,變數的另外乙個名字,變數和別名它們的位址是一樣的,操作別名就是操作變數

2:引用就是別名常量,一旦引用被初始化就不能再改變了(可以理解為指標常量,指向的值不能改變,能改變的只是它的該位址處的值)

3:引用物件huamn mike; human &rmike = mike

4:引用不能為空,引用只能對其進行初始化,不能對其賦值

5:按值傳遞,函式傳遞時拷貝的是物件的副本,

6:按址傳遞:傳遞的是位址

7:按別名傳遞

8:利用指標和引用返回多個值

9:按值傳遞物件,在函式中傳遞乙個物件,會呼叫物件的複製建構函式在棧中建立乙個該物件的副本,而當函式返回時,傳遞該物件時建立的該物件的副本會被刪除,

這時又會自動呼叫析構函式來釋放記憶體,假設返回的仍然是該物件,並且仍然採用按值傳遞傳遞的方式,那麼就又會呼叫複製建構函式建立乙個該物件的副本,

當該值被成功返回給程式設計師呼叫後,然後再呼叫該物件的析構函式刪除臨時拷貝並釋放記憶體

class a

~a()

int get()

private:

int x;

};a func()

int main()

輸出:跳轉到func函式中

建構函式建立乙個物件

物件a的位址0013ff00

複製建構函式建立乙個物件

析構函式刪除乙個物件

func函式中物件a的副本的位址0013ff13

23析構函式刪除乙個物件

為什麼物件a的副本會知道main函式結束,這時由於對於引用,如果引用的是乙個臨時變數,那麼這個臨時變數的生存期會不少於這個引用的生存期,

但是指標就沒有這個特性,假如把物件a的副本的位址賦值給乙個指標,那麼在func函式返回物件a的副本的時候,就可以析構這個物件a的副本

a *r = &func();

輸出:跳轉到func函式中

建構函式建立乙個物件

物件a的位址0013ff00

複製建構函式建立乙個物件

析構函式刪除乙個物件

析構函式刪除乙個物件

func函式中物件a的副本的位址0013ff13

2313:呼叫複製建構函式建立的副本物件存放在棧中

14:在**建立,就在**釋放堆中的物件

第九章(筆記)

轉移指令是可以修改ip,或同時修改cs和ip的指令 offset 是用於提取標號偏移位址的操作符 jmp在第2章裡說到時用於修改ip或同時修改cs和ip的轉移指令,這章裡單獨的jmp指令是乙個無條件的轉移指令 jmp short 標號 是實現段內短轉移 jmp near ptr 標號 是實現段內近轉...

第九章作業

班級 0401304 學號 2013211526 姓名 鄧小俊 2.身份驗證 依據使用者所提供的身份資訊,來進行登入驗證,可以再細分為使用者是否可以登入sql sever 使用者是否可以登入到指定的目標資料庫等。授權 已通過身份驗證的使用者,檢查其所被賦予的許可權,是否可以訪問或者執行目標的物件 3...

第九章 介面

1 介面前面可以用pullic private 修飾,但是介面裡面的域預設是public static final的,即使該域是乙個內部介面也是public的,不寫代表是public而不是protected,成員變數儲存 在靜態區域.介面裡面的方法預設是public的,可以不寫,因此實現該介面的類的...