C 中類的this指標以及const成員函式

2021-10-18 07:56:14 字數 2005 閱讀 9801

類的基本思想:資料抽象和封裝。

資料抽象依賴介面和實現分離的程式設計技術。

類的設計者來思考類的實現過程。使用類的程式設計師只需要抽象的思考型別做了什麼。

設計乙個類,就是乙個創造的過程。過程中需要考慮如何使得類易於使用。乙個優秀的類,既要有直觀易於使用的介面,也必須具備高效的實現過程。

this是類額外的隱式引數。

當我們呼叫類的成員函式,預設有乙個該類物件的this引數傳入成員函式的引數中。

當我們在類的內部,可以直接呼叫函式物件的成員,因為this所指的就是這個物件。

this是乙個常量指標。我們不允許改變this中保持的位址。

該const關鍵字,出現在緊隨函式的引數列表之後。

他主要作用與this隱式引數,是的this指標變成乙個指向常量的常量指標。

同樣,使用const修飾的成員函式,被成為常量成員函式。

這樣的目的是:使得常量成員函式不能改變呼叫他的物件的內容。

同樣,常量物件,或者對常量物件的引用和指標,都只能呼叫常量成員函式。

舉個primer中的例子:

class

screen

// 2

screen

(pos ht, pos wd,

char c)

:height

(ht)

,width

(wd)

,contents

(ht * wd, c)

// 3

char

get(

)const

char

get(pos r, pos c)

const

inline screen&

move

(pos r, pos c)

;inline screen&

set(

char c)

;inline screen&

set(pos r, pos c,

char ch)

;const screen&

display

(std::ostream& os)

const

screen&

display

(std::ostream& os)

private

:void

do_display

(std::ostream& os)

const

private

: pos cursor =0;

pos height =

0, width =0;

std::string contents;

};

我們重點來看兩個display函式。

const screen&

display

(std::ostream& os)

const

上述的display函式是乙個const成員函式,按照第二部分的講述,const成員函式,意味著,this指標是乙個指向常量的常量指標。所以如果我們想要返回this指標的話,必須返回const screen&型別

但是,const成員函式只能被const物件呼叫,如果我們有非const物件想要實現display操作,就需要對display函式進行過載。

screen&

display

(std::ostream& os)

最後,思考下函式do_display

void

do_display

(std::ostream& os)

const

該函式是乙個私有的const成員函式。

當被const版本的display呼叫的時候,傳入的*this是乙個指向常量的指標。

當被非const版本的display呼叫時,傳入的是正常的this指標。

C 類中的this指標

1.this指標的用處 乙個物件的this指標並不是物件本身的一部分,不會影響sizeof 物件 的結果。this作用域是在類內部,當在類的非靜態成員函式中訪問類的非靜態成員的時候,編譯器會自動將物件本身的位址作為乙個隱含引數傳遞給函式。也就是說,即使你沒有寫上this指標,編譯器在編譯的時候也是加...

C 類中的指標

當我們在堆記憶體例項化物件時,可以得到物件指標 下面為堆記憶體例項化物件的例項以及如何通過物件指標訪問物件中的成員 classa a int x void show intmain 以物件的指標作為乙個物件中的資料成員。例子 classa a void show private int a int ...

C 類中的指標

c this指標 在c 中,每乙個物件都能通過this指標來訪問自己的位址。this指標是所有成員變數的隱含引數。在函式內部,this指標可以用來指向呼叫物件。注意 友元函式沒有this指標,友元不是類的成員,只有成員函式才有this指標 include using namespace std cl...