初識C 的 this ,引用 的區別

2022-08-29 03:30:14 字數 1306 閱讀 5348

在說明問題之前,先回顧在c語言中,乙個物件怎麼呼叫物件本身裡的成員。又回顧到了以前tom請lucy吃飯的問題:

一 .this 指標   

1 #include2

3struct

person 4

; 1011

void hello(struct person*t); 12

13int

main() 14

272829

3031

void hello(struct person*t) 32

35

為了方便地請吃飯,我們引用了乙個函式指標來指向hello,在c++中,類似於hello的操作叫做方法;

而結構體struct person叫做類;

在21行 struct person tom這句叫做例項化乙個物件,tom就叫做物件;

為了方便地呼叫到類自身裡面的引數,我們定義了乙個struct person* t,當呼叫方法時候就可以方便地呼叫本身的引數;

而在c++中,乙個物件的this指標並不是物件本身的一部分,不會影響sizeof(物件)的結果。this作用域是在類內部,當在類的非靜態成員函式中訪問類的非靜態成員的時候,編譯器會自動將物件本身的位址作為乙個隱含引數傳遞給函式。也就是說,即使你沒有寫上this指標,編譯器在編譯的時候也是加上this的,它作為非靜態成員函式的隱含形參,對各成員的訪問均通過this進行

1 #include 2

3using

namespace

std; 4

5struct

person 6

; 1112

intmain() 13

192021

void

person::hello() 22

2728 ~

二 .引用,引用很像c語言中的指標,但是,c++中的引用和c語言的指標卻有著明顯的區別:

1,引用是為了指向同一塊記憶體,只是名字不同而已;而指標是乙個存放位址的變數;

2,指標可以不初始化,而引用必須要初始化;

。。。。(還有,以後補充)

1 #include 2

3using

namespace

std; 4

5void hello(int &j); 6

7int

main() 8

171819

void hello(int &j) 20

2425 ~

引用是c++特有的。

C 和C 引用的區別

c 用多了,最近又回到c 程式設計。發現有些致命的區別,如果不注意,很可能導致一些莫名其妙的bug。引用型別就是其中乙個。在c 中,引用跟指標比較接近,除了值型別 int,float,struct等 其它型別都是引用型別。它本身是乙個棧上面的變數,指向堆上面的具體例項,可以隨意更改它指向的例項。而在...

指標的初識和解引用

讓我們來 看一下以下的 int a 10 int b 20 int p a p 10 p b p 200 p a int pp p pp a pp 1000 pp b pp 2000 看到這樣的 是不是一臉的懵逼,現在讓我們來看看他的每一句都是什麼意思。開始之前我們先了解一下指標和解引用。指標 po...

C 中 值引用和物件引用的區別

另外,棧有乙個很重要的特殊性,就是存在棧中的資料可以共享。假設我們同時定義 複製內容到剪貼簿 1 2 inta 3 intb 3 編譯器先處理int a 3 首先它會在棧中建立乙個變數為a的引用,然後查詢有沒有字面值為3的位址,沒找到,就開闢乙個存放3這個字面值的位址,然後將a指向3的位址。接著處理...