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

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

淺析this指針

2019-11-08 02:40:07
字體:
來源:轉載
供稿:網友
1.什么是this指針 this指針是隱含定義在非靜態成員函數中的參數,類的非靜態成員函數訪問非靜態成員時,編譯器會將對象本身的地址傳給函數作為隱含參數。this指針就是當前對象的地址,對各成員的訪問是通過this 指針進行的。2.this指針的特性 this指針是 類類型* const this this指針不是對象的一部分,不影響sizeof()的結果 this指針的作用域是在非靜態成員函數的內部 this指針是 類成員函數第一個隱含參數,由編譯器負責傳遞維護3.this指針的代碼分析 
class Date{public :	Date(int year = 1900, int month = 1, int day = 1)	{		this->year = year;		this->month = month;		this->day = day;	}	Date(Date& d)	{		this->year = d.year;		this->month = d.month;		this->day = d.day;	}	void dosomthing()	{	}PRivate:	int year;	int month;	int day;};void Funtest(){	Date d1(2017, 2, 18);	d1.dosomthing();	Date d2(d1);	d2.dosomthing();}int main(){	Funtest();	system("pause");	return 0;} 在這段代碼中定義了一個構造函數,一個拷貝構造函數和一個普通成員函數。在創建d1對象時,調用了構造函數,構造函數是沒有this指針這個參數的,但是在監視窗口中可以看到this指針,而且它的值就是對象d1的地址。d1調用普通成員函數dosomthing()時,這個函數中是沒有參數的,但是也可以通過監視窗口查看到有this指針,而且this的值是d1的地址。通過創建對象d2,對象d2調用普通成員函數dosomthig(),也可以清楚看到函數中隱藏了this指針這個參數,并且this指針的值就是對象d2的地址。這樣做可以保證不同對象的成員函數使用數據成員時,使用的一定是指定對象的數據成員。4.為什this指針不能在函數中使用?靜態成員函數并不是針對某個類的實例對象,而是屬于整個類的,為所有的對象實例所共有。它在作用域的范圍內是全局的,獨立于類的對象之外的。它只對類內部的靜態成員變量做操作。當實例化一個類的對象時候,里面不存在靜態成員的。this指針是相當于一個類的實例的指針,this是用來操作對象實例的內容的,既然靜態成員函數和變量都是獨立于類的實例對象之外的,它就不能用this指針,也不能操作非靜態成員。5.我們只有獲得一個對象后,才能通過對象使用this指針,如果我們知道一個對象this指針的位置,能否直接使用?獲取一個對象之后,我們不應該也不需要在類外使用this對其操作,this是一個右值,是非靜態成員函數的一個隱藏參數,不存在所謂的this的“位置”,只是用this標記了對象所存在的位置,&this不會通過編譯。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 盘锦市| 武清区| 庄河市| 察隅县| 河南省| 拜泉县| 鸡西市| 高陵县| 长治县| 沙洋县| 江源县| 信阳市| 晋宁县| 安顺市| 吴堡县| 河源市| 紫金县| 肇东市| 滁州市| 东阳市| 黔西县| 嵊州市| 巴马| 桂林市| 北辰区| 富锦市| 利川市| 成都市| 乌苏市| 鱼台县| 武宁县| 新绛县| 深水埗区| 军事| 东丰县| 滦南县| 宣恩县| 阳西县| 绥阳县| 裕民县| 武山县|