1.this指針,就是一個指向當前對象的指針。我們知道,定義出一個類,它在內存中是不占空間的,只有定義了該類類型的對象時,系統就會為該對象分配一段存儲空間,這段空間里只存儲成員變量,對于成員函數,是存放在代碼區的。(復習:內存分為5大區:靜態區、常量區、棧、堆、代碼區)。下邊給出一個日期類,通過這個實例,深度理解this指針。
#define _CRT_SECURE_NO_WARNINGS 1#includeusing 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;}
2.參數里的this指針一般不需要寫,系統會隱式將對象的首地址傳給函數,但是如果要寫,函數調用的時候也需要寫上對象的地址,函數體中的this并不是在所有情況都可以省略,比如:(仍然使用上邊的日期類)
void setYear(int m_year)
{
this->m_year = m_year;
}
在這種情況下出現了重名,函數體的this必須寫,當然有一定基礎的程序員才不會這么寫呢。
新聞熱點
疑難解答