精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

淺析C++中this指針的理解以及作用

Q4MP_gh_c472c21 ? 來源:小林coding ? 作者:小林coding ? 2021-06-27 11:24 ? 次閱讀

01

C++程序到C程序的翻譯

想要理解C++語言中的this指針,下面我們做一個舉例,我們要先把下面的C++代碼轉換成C代碼:

f2e45c3c-d6b2-11eb-9e57-12bb97331649.png

(1)大家知道,C語言中沒有類定義class關鍵詞,但是有跟class類似的定義關鍵詞,就是struct結構體定義。m_height變量是Tree類的成員變量,那么我們就可以把Tree類和成員變量翻譯成下面的C代碼:

f3178a58-d6b2-11eb-9e57-12bb97331649.png

(2)SetHeight函數是Tree類的成員函數,但是C程序里面沒有成員函數這個概念的,所以只能把成員函數翻譯成全局的函數:

f3214476-d6b2-11eb-9e57-12bb97331649.png

那為什么還要再加個this指針呢?我們接著繼續往下看。(3)接下來把C++中的main函數翻譯成C程序,是下面這樣的:

f3308c4c-d6b2-11eb-9e57-12bb97331649.png

所以最終把上面的C++程序轉變為C程序的代碼如下:

f3396024-d6b2-11eb-9e57-12bb97331649.png

加上SetHeignt函數的第一個參數this指針的作用,就是為了給結構體Tree域里的變量賦值。

02

this指針的作用

this指針的作用就是指向成員函數所作用的對象,所以非靜態成員函數中可以直接使用this來代表指向該函數作用的對象的指針。

03

this指針和靜態成員函數

靜態成員函數不能使用this指針,因為靜態成員函數相當于是共享的變量,不屬于某個對象的變量。

04

小結

(1)通過將C++程序翻譯成C程序的方式,來理解this指針,其作用就是指向非靜態成員函數所作用的對象,每個成員函數的第一個參數實際上都有個默認this指針參數;(2)靜態成員函數無法使用this指針。

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 函數
    +關注

    關注

    3

    文章

    4305

    瀏覽量

    62430
  • C++
    C++
    +關注

    關注

    22

    文章

    2104

    瀏覽量

    73489
  • C程序
    +關注

    關注

    4

    文章

    254

    瀏覽量

    35996

原文標題:C++中this指針的理解和作用

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    C語言和C++結構體的區別

    同樣是結構體,看看在C語言和C++中有什么區別?
    的頭像 發表于 10-30 15:11 ?137次閱讀

    C語言指針運算符詳解

    C語言中,當你有一個指向數組某個元素的指針時,你可以對該指針執行某些算術運算,例如加法或減法。這些運算可以用來遍歷數組的元素,如ptr
    的頭像 發表于 10-30 11:16 ?158次閱讀

    ostream在c++的用法

    ostream 是 C++ 標準庫中一個非常重要的類,它位于 頭文件(實際上,更常見的是通過包含 頭文件來間接包含 ,因為 包含了 和 )。 ostream 類及其派生類(如 std::cout
    的頭像 發表于 09-20 15:11 ?506次閱讀

    面試常考+1:函數指針指針函數、數組指針指針數組

    在嵌入式開發領域,函數指針指針函數、數組指針指針數組是一些非常重要但又容易混淆的概念。理解它們的特性和應用場景,對于提升嵌入式程序的效率
    的頭像 發表于 08-10 08:11 ?699次閱讀
    面試常考+1:函數<b class='flag-5'>指針</b>與<b class='flag-5'>指針</b>函數、數組<b class='flag-5'>指針</b>與<b class='flag-5'>指針</b>數組

    C++實現類似instanceof的方法

    函數,可實際上C++沒有。但是別著急,其實C++中有兩種簡單的方法可以實現類似Java的instanceof的功能。 在 C++
    的頭像 發表于 07-18 10:16 ?534次閱讀
    <b class='flag-5'>C++</b><b class='flag-5'>中</b>實現類似instanceof的方法

    面試的高頻問題:指針函數與函數指針,你能完美應對嗎?

    一直覺得C語言較其他語言最偉大的地方就是C語言中的指針,有些人認為指針很簡單,而有些人認為指針很難,當然這里的對簡單和難并不是等價于對
    的頭像 發表于 06-22 08:11 ?1561次閱讀
    面試<b class='flag-5'>中</b>的高頻問題:<b class='flag-5'>指針</b>函數與函數<b class='flag-5'>指針</b>,你能完美應對嗎?

    Keil+C51對雙數據指針的直接利用

    Keil+C51對雙數據指針的直接利用
    發表于 06-18 10:15 ?0次下載

    使用 MISRA C++:2023? 避免基于范圍的 for 循環中的錯誤

    在前兩篇博客,我們?向您介紹了新的 MISRA C++ 標準?和?C++ 的歷史?。在這篇博客,我們將仔細研究以 C++
    的頭像 發表于 03-28 13:53 ?737次閱讀
    使用 MISRA <b class='flag-5'>C++</b>:2023? 避免基于范圍的 for 循環中的錯誤

    C語言的指針用法

    C語言編程善用指針可以簡化一些任務的處理,而對于一些任務(比如動態內存分配),必須要有指針才行的。也就是說精通C
    發表于 03-05 14:22 ?320次閱讀
    <b class='flag-5'>C</b>語言的<b class='flag-5'>指針</b>用法

    怎么理解指針指針

    怎么理解指針指針?其實這個概念并不難,只是把它放到實際應用,容易造成困擾。
    的頭像 發表于 02-23 16:46 ?1081次閱讀
    怎么<b class='flag-5'>理解</b><b class='flag-5'>指針</b>的<b class='flag-5'>指針</b>?

    c語言,c++,java,python區別

    操作系統、嵌入式系統等對性能要求較高的場景。C語言的語法相對簡單,學習曲線較平緩,也是學習其他高級語言的入門語言。 C++C++是在C語言的基礎上進行擴展和改進的一種編程語言。它支
    的頭像 發表于 02-05 14:11 ?2234次閱讀

    C++簡史:C++是如何開始的

    的 MISRA C++:2023 博客系列的第二部分。 在這篇博客,我們將深入探討 C++ 的歷史、編程語言多年來的發展歷程以及它的下一步發展方向。
    的頭像 發表于 01-11 09:00 ?536次閱讀
    <b class='flag-5'>C++</b>簡史:<b class='flag-5'>C++</b>是如何開始的

    C語言和C++那些不同的地方

    ++11標準。根據不同的標準,它們的功能也會有所不同,但是越新的版本支持的編譯器越少,所以本文在討論的時候使用的C語言標準是C89,C++標準是C++99.我們來介紹
    的頭像 發表于 12-07 14:29 ?907次閱讀
    <b class='flag-5'>C</b>語言和<b class='flag-5'>C++</b><b class='flag-5'>中</b>那些不同的地方

    數組與指針不能混用的情況

    指針的基本概念。數組是一組相同類型的元素的集合,而指針是一個變量,它存儲了一個地址,該地址指向內存的某個位置。在 C/C++
    的頭像 發表于 12-07 13:46 ?571次閱讀

    如何選擇創建c語言和c++

    選擇創建 C 語言和 C++ 都需要綜合考慮多個因素。在決定使用哪種語言之前,我們需要對這兩種語言的特點、優缺點、適用場景、學習成本等進行全面的了解和對比。下面是關于選擇創建 C 語言和 C+
    的頭像 發表于 11-27 15:58 ?569次閱讀