深度理解c++中的this指針
1.this指針,就是一個(gè)指向當(dāng)前對(duì)象的指針。我們知道,定義出一個(gè)類,它在內(nèi)存中是不占空間的,只有定義了該類類型的對(duì)象時(shí),系統(tǒng)就會(huì)為該對(duì)象分配一段存儲(chǔ)空間,這段空間里只存儲(chǔ)成員變量,對(duì)于成員函數(shù),是存放在代碼區(qū)的。(復(fù)習(xí):內(nèi)存分為5大區(qū):靜態(tài)區(qū)、常量區(qū)、棧、堆、代碼區(qū))。下邊給出一個(gè)日期類,通過(guò)這個(gè)實(shí)例,深度理解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指針一般不需要寫(xiě),系統(tǒng)會(huì)隱式將對(duì)象的首地址傳給函數(shù),但是如果要寫(xiě),函數(shù)調(diào)用的時(shí)候也需要寫(xiě)上對(duì)象的地址,函數(shù)體中的this并不是在所有情況都可以省略,比如:(仍然使用上邊的日期類)
void setYear(int m_year)
{
this->m_year = m_year;
}
在這種情況下出現(xiàn)了重名,函數(shù)體的this必須寫(xiě),當(dāng)然有一定基礎(chǔ)的程序員才不會(huì)這么寫(xiě)呢。
相關(guān)文章
C語(yǔ)言通過(guò)三步翻轉(zhuǎn)法實(shí)現(xiàn)單詞倒置詳解
這篇文章主要為大家分享了用三步翻轉(zhuǎn)法將一句話的單詞進(jìn)行倒置的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-05-05c++ 盡量不要使用#define 而是用const、enum、inline替換。
為什么這么說(shuō)呢?或許很多程序員已經(jīng)習(xí)慣在文件開(kāi)始使用大量的#define語(yǔ)句2013-01-01基于C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的掃雷小游戲
這篇文章主要為大家詳細(xì)介紹了基于C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11C++圖論之Bellman-Ford算法和SPFA算法的實(shí)現(xiàn)
貝爾曼-福特算法(Bellman-Ford)是由理查德·貝爾曼和萊斯特·福特創(chuàng)立的,求解單源最短路徑問(wèn)題的一種算法。SPFA 算法是 Bellman-Ford算法 的隊(duì)列優(yōu)化算法的別稱,通常用于求含負(fù)權(quán)邊的單源最短路徑。本文將詳解兩個(gè)算法的實(shí)現(xiàn),需要的可以參考一下2022-06-06C++實(shí)現(xiàn)宿舍管理查詢系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)宿舍管理查詢系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03C++中VTK9.3.0刻度標(biāo)簽重疊的問(wèn)題記錄
這篇文章主要介紹了C++中VTK9.3.0刻度標(biāo)簽重疊的問(wèn)題,本文采用VTK9.3.0版本,其他版本如VKT8.0亦有同樣的問(wèn)題,需要的朋友可以參考下2024-06-06詳解C++ STL模擬實(shí)現(xiàn)forward_list
forward_list是C++ 11新增的容器,它支持從容器中的任何位置快速插入和移除元素的容器,不支持快速隨機(jī)訪問(wèn)。本文將模擬實(shí)現(xiàn)forward_list,感興趣的可以了解一下2023-01-01