網站首頁 編程語言 正文
01、C++程序到C程序的翻譯
想要理解C++語言中的this指針,下面我們做一個舉例,我們要先把下面的C++代碼轉換成C代碼:
(1)大家知道,C語言中沒有類定義class關鍵詞,但是有跟class類似的定義關鍵詞,就是struct結構體定義。m_height變量是Tree類的成員變量,那么我們就可以把Tree類和成員變量翻譯成下面的C代碼:?
(2)SetHeight函數是Tree類的成員函數,但是C程序里面沒有成員函數這個概念的,所以只能把成員函數翻譯成全局的函數:?
那為什么還要再加個this指針呢?我們接著繼續往下看。
(3)接下來把C++中的main函數翻譯成C程序,是下面這樣的:?
所以最終把上面的C++程序轉變為C程序的代碼如下:?
加上SetHeignt函數的第一個參數this指針的作用,就是為了給結構體Tree域里的變量賦值。
02、this指針的作用
this指針的作用就是指向成員函數所作用的對象,所以非靜態成員函數中可以直接使用this來代表指向該函數作用的對象的指針。
03、this指針和靜態成員函數
靜態成員函數不能使用this指針,因為靜態成員函數相當于是共享的變量,不屬于某個對象的變量。
04、小結
(1)通過將C++程序翻譯成C程序的方式,來理解this指針,其作用就是指向非靜態成員函數所作用的對象,每個成員函數的第一個參數實際上都有個默認this指針參數;(2)靜態成員函數無法使用this指針。
原文鏈接:https://juejin.cn/post/7032160217089441823
相關推薦
- 2022-08-14 Nginx安裝配置詳解_nginx
- 2022-09-22 Mybaits一級緩存和二級緩存分別是什么,區別是什么?
- 2022-08-07 pd.drop_duplicates刪除重復行的方法實現_python
- 2022-04-16 python中的?sorted()函數和sort()方法區別_python
- 2022-06-15 python中?conda?虛擬環境管理和jupyter內核管理_python
- 2022-01-27 laravel JWTAuth對api接口權限進行鑒權
- 2023-11-23 python的相對路徑表示方式
- 2022-11-17 C語言數據結構不掛科指南之棧&隊列&數組詳解_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支