在之前學習python時,接觸到self形參,它是指向類物件的乙個位址。
在c++學習過程中,也有這樣的機制,那就是this指標。
我們在呼叫成員函式的時候,實際上是替類的物件呼叫它!成員函式通過乙個名為this的額外的隱式引數來訪問呼叫它的那個物件!當我們呼叫成員函式的時候,用請求的該函式的物件的位址來初始化this形參。即編譯器負責把物件的位址傳遞給this形參。
因為this的目的總是指向這個物件,因此,this預設是常量指標!我們不允許改變this中的位址。
有時候我們為了避免呼叫的成員函式修改呼叫物件的內容,常常把這個成員函式宣告為常量成員函式,常見的做法是在函式的宣告之後新增const關鍵字!
sales_data& combine(const sales_data&) const;
預設的情況下,this的型別是指向類型別非常量版本的常量指標。即是:sales_data * const
也就是,this指標儲存的位址不能改變,但是指向的物件的內容可以改變。
當我們在成員函式宣告之後新增const關鍵字之後,就將this修改為 const sales_data * const ,避免呼叫的成員函式修改呼叫物件的內容。
定義乙個返回this物件的函式
sales_data& sales_data::combine(const sales_data & rhs)
我們無須使用隱式的this指標訪問函式呼叫者的某個具體成員,而是需要把呼叫函式的物件當作是乙個整體來訪問。return語句解引用this指標以獲得執行該函式的物件。 16 C語言 指標
學習 c 語言的指標既簡單又有趣。通過指標,可以簡化一些 c 程式設計任務的執行,還有一些任務,如動態記憶體分配,沒有指標是無法執行的。include int main 當上面的 被編譯和執行時,它會產生下列結果 通過上面的例項,我們了解了什麼是記憶體位址以及如何訪問它。接下來讓我們看看什麼是指標。...
16 C語言及ARM中堆疊指標SP設定的理解與總結
棧是一種特殊的線性表,是一種只允許在表的一端進行插入或刪除操作的線性表。表中允許進行插入 刪除操作的一端稱為棧頂。表的另一端稱為棧底。棧頂的當前位置是動態的,對棧頂當前位置的標記稱為棧頂指標。當棧中沒有資料元素時,稱之為空棧。棧的插入操作通常稱為進棧或入棧,棧的刪除操作通常稱為退棧或出棧。簡易理解 ...
1 6 C 類和物件
day 6 類和物件 1,類類內部包含類的特徵和類的行為 1,特徵 在類中的表現形式為字段 字段 訪問修飾符 資料型別 欄位名 字段預設修飾符為private 類的預設修飾符為internal,在本程式集可以訪問,他的許可權比public小一點 程式集 exe 可執行檔案 和.dll 2,行為 在類...