那曲檬骨新材料有限公司

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

    文章

    4346

    瀏覽量

    62977
  • C++
    C++
    +關注

    關注

    22

    文章

    2114

    瀏覽量

    73858
  • C程序
    +關注

    關注

    4

    文章

    255

    瀏覽量

    36139

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

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

收藏 人收藏

    評論

    相關推薦

    指針被釋放后就變成了空指針

    ;} ? ? 這段代碼大家看下有沒有問題,能不能順利運行? 前面三行都沒有問題,指針 s 指向了一塊堆內存,把字符串 helloworld 拷貝到堆內存,然后釋放了 s。 問題就出在這,很多同學不理解
    的頭像 發表于 01-22 09:23 ?72次閱讀

    Spire.XLS for C++組件說明

    Spire.XLS for C++ 是一款專業的 C++ Excel 組件,可以用在各種 C++ 框架和應用程序。Spire.XLS for C+
    的頭像 發表于 01-14 09:40 ?148次閱讀
    Spire.XLS for <b class='flag-5'>C++</b>組件說明

    EE-112:模擬C++的類實現

    電子發燒友網站提供《EE-112:模擬C++的類實現.pdf》資料免費下載
    發表于 01-03 15:15 ?0次下載
    EE-112:模擬<b class='flag-5'>C++</b><b class='flag-5'>中</b>的類實現

    C語言指針學習筆記

    本文從底層內存分析,徹底讓讀者明白C語言指針的本質。
    的頭像 發表于 11-05 17:40 ?306次閱讀
    <b class='flag-5'>C</b>語言<b class='flag-5'>指針</b>學習筆記

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

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

    C語言指針運算符詳解

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

    ostream在c++的用法

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

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

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

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

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

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

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

    鴻蒙OS開發實例:【Native C++

    使用DevEco Studio創建一個Native C++應用。應用采用Native C++模板,實現使用NAPI調用C標準庫的功能。使用C標準庫hypot接口計算兩個給定數平方和的平
    的頭像 發表于 04-14 11:43 ?2765次閱讀
    鴻蒙OS開發實例:【Native <b class='flag-5'>C++</b>】

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

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

    C語言的指針用法

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

    怎么理解指針指針

    怎么理解指針指針?其實這個概念并不難,只是把它放到實際應用,容易造成困擾。
    的頭像 發表于 02-23 16:46 ?1287次閱讀
    怎么<b class='flag-5'>理解</b><b class='flag-5'>指針</b>的<b class='flag-5'>指針</b>?
    网上赌城| 大发888游戏平台 官方| 百家乐官网平台出租家乐平台出租| 百家乐最佳注码法| 明升百家乐官网QQ群| 德州扑克看牌器| 找查百家乐玩法技巧| 百家乐官网赢多少该止赢| 皇冠正网开户| 赌博百家乐的玩法技巧和规则| 百家乐官网娱乐网备用网址| 88娱乐城注册| 大发888游乐城| 百家乐机器昀程序| 蓝盾百家乐官网网址| 武穴市| 全讯网334466| 玩百家乐澳门368娱乐城| 时时博百家乐官网的玩法技巧和规则| 化德县| E乐博网址| 线上娱乐场| 大发888bet下载| 视频百家乐| 球探网足球比分| 百家乐怎么玩| 六合彩即时开奖| 大赢家娱乐城官方网| 爱玩棋牌下载| 貔喜脉动棋牌下载| 大发娱乐场下载| 亲朋棋牌游戏下载| 香港六合彩官方网站| 星期八娱乐城| 寿阳县| 百家乐官网大西洋城| 百家乐官网娱乐平台备用网址| 百家乐官网智能系统| 公海百家乐官网的玩法技巧和规则| 请问下百家乐官网去哪个娱乐城玩最好呢| 百家乐官网娱乐场开户注册|