C++ this指针
this 指針
引言:
首先,我們都知道類的成員函數(shù)可以訪問(wèn)類的數(shù)據(jù)(限定符只是限定于類外的一些操作,類內(nèi)的一切對(duì)于成員函數(shù)來(lái)說(shuō)都是透明的),那么成員函數(shù)如何知道哪個(gè)對(duì)象的數(shù)據(jù)成員要被操作呢,原因在于每個(gè)對(duì)象都擁有一個(gè)指針:this指針,通過(guò)this指針來(lái)訪問(wèn)自己的地址。
注意:
this指針并不是對(duì)象的一部分,this指針?biāo)嫉膬?nèi)存大小是不會(huì)反應(yīng)在sizeof操作符上的。this指針的類型取決于使用this指針的成員函數(shù)類型以及對(duì)象類型,
一、this指針的概念
定義
在 C++ 中,每一個(gè)對(duì)象都能通過(guò) this 指針來(lái)訪問(wèn)自己的地址。this 指針是所有成員函數(shù)的隱含參數(shù)。因此,在成員函數(shù)內(nèi)部,它可以用來(lái)指向調(diào)用對(duì)象。
this只能在成員函數(shù)中使用
成員函數(shù)默認(rèn)第一個(gè)參數(shù)為T* const register this。
(友元函數(shù),全局函數(shù)不是成員函數(shù))
this指針不能再靜態(tài)函數(shù)中使用
靜態(tài)函數(shù)如同靜態(tài)變量一樣,他不屬于具體的哪一個(gè)對(duì)象,靜態(tài)函數(shù)表示了整個(gè)類范圍意義上的信息,而this指針卻實(shí)實(shí)在在的對(duì)應(yīng)一個(gè)對(duì)象,所以this指針不能被靜態(tài)函數(shù)使用。
this指針的創(chuàng)建
this指針在成員函數(shù)的開始執(zhí)行前構(gòu)造的,在成員的執(zhí)行結(jié)束后清除。
this指針只有在成員函數(shù)中才有定義。
創(chuàng)建一個(gè)對(duì)象后,不能通過(guò)對(duì)象使用this指針。也無(wú)法知道一個(gè)對(duì)象的this指針的位置(只有在成員函數(shù)里才有this指針的位置)。當(dāng)然,在成員函數(shù)里,你是可以知道this指針的位置的(可以&this獲得),也可以直接使用的。
二、this指針的操作
關(guān)于this指針的一個(gè)精典回答:
當(dāng)你進(jìn)入一個(gè)房子后,
你可以看見桌子、椅子、地板等,
但是房子你是看不到全貌了。
對(duì)于一個(gè)類的實(shí)例來(lái)說(shuō),
你可以看到它的成員函數(shù)、成員變量,
但是實(shí)例本身呢?
this是一個(gè)指針,
它時(shí)時(shí)刻刻指向你這個(gè)實(shí)例本身。
總結(jié)
以上是生活随笔為你收集整理的C++ this指针的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: WorkNC批处理功能使人机结合——批量
- 下一篇: C++之this指针