程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 關於c++中的this指針

關於c++中的this指針

編輯:關於C++

記憶中,初識c++中的this指針的時候,根本不知道它是什麼,有什麼作用。再識,就知道了它的作用,也掌握了它背後的東西。

this指針,就是一個指向當前對象的指針。我們知道,定義出一個類,它在內存中是不占空間的,只有定義了該類類型的對象時,系統就會為該對象分配一段存儲空間,這段空間裡只存儲成員變量,對於成員函數,是存放在代碼區的。(復習:內存分為5大區:靜態區、常量區、棧、堆、代碼區)。下邊給出一個日期類,通過這個實例,深度理解this指針。

 

#define _CRT_SECURE_NO_WARNINGS 1

#include
using namespace std;

class Date 
{
public:
	void setYear(int year)
	{
		m_year = year;
	}
	void setMonth(int month)
	{
		m_month = month;
	}
	void setDay(int day)
	{
		m_day = day;
	}
	void print()
	{
		cout << m_year << "-" << m_month << "-" << m_day << endl;
	}
private:
	int m_year;
	int m_month;
	int m_day;
};
int main()
{
	Date date;
	date.setYear(2016);
	date.setMonth(7);
	date.setDay(4);
	date.print();
	system("pause");
	return 0;
}

 

我們用圖片來解析上邊的代碼:

\

參數裡的this指針一般不需要寫,系統會隱式將對象的首地址傳給函數,但是如果要寫,函數調用的時候也需要寫上對象的地址,函數體中的this並不是在所有情況都可以省略,比如:(仍然使用上邊的日期類)

void setYear(int m_year)
{
        this->m_year = m_year;
}

在這種情況下出現了重名,函數體的this必須寫,當然有一定基礎的程序員才不會這麼寫呢。

越努力,越幸運~~

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved