C C 中引用的底層原理

2021-09-27 10:34:51 字數 655 閱讀 3417

其實我們見到的大部分解釋都是這麼說的:

首先我們來看看對引用取位址會發生什麼?

#include

intmain()

// 結果輸出如下

e99a7dec

e99a7dec

可以看到,對引用取位址其實就是對被引用物件取位址,所以這樣肯定行不通。。

但是,我們可以通過位址偏移來間接實現。

#include

class

test

;int

main()

// 輸出

sizeof

int is 4.

sizeof test is 16.

sizeof

(int

*) is 8.

24cb9ff0---10

24cb9fe8--

-24cb9ff0

根據輸出就可以總結出如下資訊:

從底層實現來說,引用就是通過指標實現的,底層就是指標。。。這個的驗證可以參考c++中「引用」的底層實現原理詳解。

但為什麼對引用不能像指標一樣操作呢?

其實就是像大部分部落格和教材中說的那樣,引用的出現就是希望開發者們把引用當成變數的別名來使用,具體怎麼做到的,我也不知道了。

c 中「引用」的底層實現原理詳解

c 中 引用 的底層實現原理詳解 c c lws123253的部落格 csdn部落格 目錄 初學c 中的 引用 這一概念的時候,很多人都是懵的,大家大概都會產生這樣的疑問?什麼是引用?引用占用記憶體嗎?於是,為了驗證你的猜想,你可能會寫出下面這樣的 來驗證 includeusing namespac...

理解C 中引用的底層實現

1 c primer提到 引用並非物件,相反的,它只是為乙個已經存在的物件所起的另外乙個名字。引用的定義必須伴隨初始化,而且一旦定義了引用,就無法令其再繫結到另外的物件,之後每次使用這個引用都是訪問它最初繫結的那個物件。2 何為物件?對於物件導向來說,物件就是類的例項,是抽象化的資料本身。更廣義的來...

SQL中 left join 的底層原理

left join的實現效果就是保留左表的全部資訊,將右表往左表上拼接,如果拼不上則為null。除了left join以外,還有inner join outer join right join等,文章不介紹其他連線的具體效果,主要講解join的底層原理是如何實現的?具體效果是怎樣呈現的?只有懂得了底...