深度理解c++中的this指針
1.this指針,就是一個指向當(dāng)前對象的指針。我們知道,定義出一個類,它在內(nèi)存中是不占空間的,只有定義了該類類型的對象時,系統(tǒng)就會為該對象分配一段存儲空間,這段空間里只存儲成員變量,對于成員函數(shù),是存放在代碼區(qū)的。(復(fù)習(xí):內(nèi)存分為5大區(qū):靜態(tài)區(qū)、常量區(qū)、棧、堆、代碼區(qū))。下邊給出一個日期類,通過這個實例,深度理解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;
}
2.參數(shù)里的this指針一般不需要寫,系統(tǒng)會隱式將對象的首地址傳給函數(shù),但是如果要寫,函數(shù)調(diào)用的時候也需要寫上對象的地址,函數(shù)體中的this并不是在所有情況都可以省略,比如:(仍然使用上邊的日期類)
void setYear(int m_year)
{
this->m_year = m_year;
}
在這種情況下出現(xiàn)了重名,函數(shù)體的this必須寫,當(dāng)然有一定基礎(chǔ)的程序員才不會這么寫呢。
相關(guān)文章
Qt 實現(xiàn)畫線筆鋒效果詳細(xì)原理及示例代碼
這篇文章主要介紹了Qt 實現(xiàn)畫線筆鋒效果詳細(xì)原理及示例代碼。文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
C++?qsort函數(shù)排序與冒泡模擬實現(xiàn)流程詳解
qsort是一個庫函數(shù),基于快速排序算法實現(xiàn)的一個排序的函數(shù),下面這篇文章主要給大家介紹了關(guān)于C語言qsort()函數(shù)使用的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-10-10

