this指標的使用

2021-09-19 10:27:19 字數 1223 閱讀 2582

this指標

以下**中定義了三個物件a,b,c. 因此有三個同樣空間大小分別存放三個物件的資料成員。但是三個物件都同樣呼叫了calcircle()函式.當不同物件的成員函式引用資料成員時,如何保證引用的是指定物件的資料成員呢?

在每乙個成員函式中都包含乙個特殊的指標,稱為this指標,它是指向本類物件的指標。

this指標是乙個特殊的隱含指標,它隱含在每乙個類的非靜態成員函式中(包括建構函式和析構函式),即類的每個非靜態成員函式都有乙個this指標指向呼叫這個成員函式的物件。

當乙個物件呼叫成員函式時,編譯系統先將物件的首位址賦給this指標,然後呼叫成員函式。在成員函式訪問資料成員時,隱含的使用this指標,這樣成員函式就能夠通過this指標來訪問目的物件的資料成員。

例如:當a呼叫成員函式calcircle()時,編譯系統將物件a的起始位址賦給this指標,成員函式按照this指標的指向找到物件a的資料成員。因此,calcircle()函式計算pi *r * r時,實際上是執行: pi * (this->r) * (this->r),因為當前this指標指向a,因此相當於執行以下語句:pi *a.r *a.r 。

成員函式calcircle()的定義如下:

double circle::calcircle()

c++編譯後把它處理為:

double circle::calcircle(circle * this)

即在成員函式的形參列表中增加了乙個this指標。在呼叫該成員函式時,實際上是用以下方式呼叫的:a.calcircle(&a);

將物件a的位址傳遞給形參this指標,然後按this的指向去引用物件的資料成員。

上述的這些過程都是編譯系統自動實現的,程式設計者不必人為的在形參中增加this指標,也不必將物件a的位址傳遞給this指標。同時,在需要的時候也可以顯式的使用this指標。

#include

using

namespace std;

const

double pi=

3.1415926

;//this指標

class

circle

;double

calcircle()

;};circle::

circle

(double r1)

double circle::

calcircle()

intmain()

指標的使用

正如拿著名片可以找到某個人一樣,通過指標可以訪問其指向的某塊記憶體區域。為此,c語言引入了間接引用的概念,這需要使用運算子 1.運算子 的作用有兩個 一,宣告 宣告某個型別的指標變數 二,間接引用,通過指標訪問其指向的記憶體區域。double num 3 double pnum pnum 對以上 說...

指標的使用

指標的使用 1.注意 一定要在對指標應用解除應用操作符 之前,將指標初始化為乙個確定的位址。例子 include int main int a int p p 10 正確使用方法 p a p 10 c 中還可以使用 new來給指標確定位址。例子 include int main int a 4 ne...

指標的使用

指標的應用場景 1.交換兩個變數 2.函式返回多個值,某些值就只能通過指標返回 傳入的引數實際上是需要儲存帶回的結果的變數 3.函式返回運算的狀態,結果通過指標返回 傳入函式的數組成了什麼?函式引數表中的陣列實際上是指標 sizeof a sizeof int 但是可以用陣列的運算子進行運算 陣列引...