定義裡的this指標

2021-06-19 13:56:17 字數 867 閱讀 8701

在類的定義過程中,經常會使用到this關鍵字,那麼我們來理解一下this指標在類定義中的作用。

this只能在成員函式中使用

全域性函式、靜態函式都不能使用this。實際上,成員函式預設第乙個引數為t* const this。如:

1classa

2

5};

其中,func的原型在編譯器看來應該是:

1intfunc(a*constthis,intp);

this在成員函式的開始前構造,在成員的結束後清除

這個生命週期同任何乙個函式的引數是一樣的,沒有任何區別。

當呼叫乙個類的成員函式時,編譯器將類的指標作為函式的this引數傳遞進去。如:

1a a;

2a.func(10);

此處,編譯器將會編譯成:

1a::func(&a,10);

看起來和靜態函式沒差別,對嗎?不過,區別還是有的。編譯器通常會對this指標做一些優化,因此,this指標的傳遞效率比較高——如vc通常是通過ecx暫存器傳遞this引數的。

幾個this指標的易混問題

C 裡怎樣定義遞迴函式指標

在c 裡說到函式指標,有很多人都是避而遠之,更別說什麼 遞迴函式指標 了。但是實際上有的東西越是神秘,其原理反而越簡單,所以我這裡就先賣乙個關子,假裝介紹乙個 高深的技巧 一樣做這個開場白了。什麼是 函式指標 呢?別砸我!我想從頭開始講 比如我們定義了乙個函式 int f char 我們先不管它的實...

c 裡的指標

include stdafx.h include include using namespace std void swap1 int inum1,int inum2 void swap2 int inum1,int inum2 void swap3 int pnum1,int pnum2 void...

指標的定義

一般來說,記憶體單元的位址稱為指標 用來存放位址的變數,稱作指標變數 int i,p p i 上面第一行 表示定義乙個int型別的指標變數,當然下面一行取位址也需要定義為int型別 p i表示取到i的位址,p則表示指向取到的i的位址,即表示位址中的的資料。指標定義時要注意野指標或者空指標的錯誤 in...