摘要: this指針是由系統自動生成的,隱含于每一個類的成員函數中的特殊指針,該指針指向正在對某個成員函數操作的對象。該文通過實例及其匯編代碼詳細地分析了this指針的特點和它的使用方法,從而進一步的理解C++中的對象和其在內存中的分配情況。
關鍵詞:this指針;對象;成員函數
中圖分類號:TP313 文獻標識碼:A 文章編號:1009-3044(2014)20-4738-02
The Research of Implicit This Pointer in C++
ZHANG Yong-chao
(Dept.of Computer,Jilin institute of Chemical Technology,Jilin 132022,China)
Abstract: this pointer is a special pointer that hidden in every class member function automatically generated by system. It points to the object of operating to a member function.the article analyses characteristics of this pointer and its application method by instances and their assembly code, so as to understanding of objects in C++ and its distribution in memory.
Key words:this pointer;object; member function
1 this指針的引入
類是對一組具有相同或者相似性質對象的抽象描述,類的本質是定義了一種對象類型,它完整的描述了該類型的所有對象的屬性和服務。C++語言中,一般把屬性稱為數據,服務稱為函數。從程序設計語言的角度講,類好比是一種程序員自己定義的數據類型,類可以用來聲明對象,一個對象是一個類的實例,類只是邏輯上的抽象,它并不能在物理上存在,只有創建了類的對象之后,在內存中才有一個類的物理表示。當定義了一個類的若干對象后,每個對象都有屬于自己的數據成員,但成員函數代碼卻合用一份。成員函數如何辨別數據成員是哪個對象的呢?例如,我們定義一個三角形類Triangle,再分別定義2個Triangle類的對象t1,t2。假如有t1. area(),應該使用對象t1中的bottom和height,計算出三角形t1的面積,假如有t2. area(),需要利用對象t2中的bottom和height,算出三角形t2的面積,問題是對象t1和t2調用同一個函數area()時,編譯系統如何做到分別使用t1或t2對象中的bottom和height計算出各自的面積呢?答案就是在C++的類的成員函數中隱式包含著一個指向當前對象的指針,這個指針被稱為this指針。……