国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

關于this指針

2019-11-08 19:24:46
字體:
來源:轉載
供稿:網友

在每個成員函數中都包含一個特殊的指針,即this指針,它的名字是固定的。

this指針是指向當前對象的指針,它的值是當前被調用的成員函數所在對象的起始地址。

例1、

class Student{public:	int FunTest(int a, int b)	{		int c = 0;		c = a + b;		return c;	}PRivate:	int age;	int tel;};int main(){	int num1=3, num2=4;	Student a;	a.FunTest(num1,num2);//實際上是a.FunTest(&a,num1,num2)	system("pause");	return 0;}此時在主函數定義了一個Student的類對象a,那么此時this指針的值就是該對象a的起始地址。

this 指針是隱式使用的,它是作為參數傳遞給成員函數的。如果成員函數從表面上看沒有參數那么實際上他有一個參數,就是this指針,如果成員函數從表面上看有一個參數那么實際上他有兩個參數,就是this指針。

this指針最大作用是指向當前對象然后通過this指針去引用各成員。

這些都是編譯器自動實現的,程序員不需要人為的在成員函數的參數中添加this指針

關于this 指針的類型:類類型 * const 

this 指針并不是對象的一部分,因此不影響sizeof的結果。

this 指針的作用域是在非靜態成員函數的內部

this 指針是類成員函數的第一個默認參數,編譯器會自動傳參

只有在類的非靜態成員函數中才可以使用this指針,因為我們知道靜態成員函數是沒有this指針的

有關_thiscall的調用約定

thiscall是唯一一個不能明確指明的函數修飾,因為thiscall不是關鍵字。它是C++類成員函數缺省的調用約定。由于成員函數調用還有一個this指針,因此必須特殊處理,thiscall意味著:

thiscall只能用在類成員函數上

           參數從右往左壓棧

           如果參數個數確定,this指針通過ecx寄存器傳給被調用者,如果參數不確定this指針在所有參數被壓棧完成之后壓棧

   對于參數個數不定的調用者自己清理堆棧否則函數自己清理

為什么叫做this指針而不叫引用呢

其實引用傳參不用創建臨時變量效率高,而用指針傳參同樣會創建臨時變量,但是由于C++就是這么創建的先有的this之后發現用引用可以也來不及改了。

在靜態成員函數中是沒有this指針的。


上一篇:PAT甲級1120

下一篇:1003. Emergency (25)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 留坝县| 天全县| 四子王旗| 祁东县| 丰顺县| 略阳县| 新田县| 治县。| 桓仁| 来安县| 攀枝花市| 苍南县| 双城市| 锡林郭勒盟| 鹤庆县| 平果县| 富蕴县| 高雄县| 温泉县| 香格里拉县| 六盘水市| 旺苍县| 寿宁县| 策勒县| 定州市| 六安市| 郁南县| 乐业县| 大城县| 乃东县| 林芝县| 康乐县| 绥中县| 乐安县| 莒南县| 宁化县| 策勒县| 南宫市| 博野县| 漳州市| 天等县|