深度理解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)文章
Qt 實(shí)現(xiàn)畫(huà)線筆鋒效果詳細(xì)原理及示例代碼
這篇文章主要介紹了Qt 實(shí)現(xiàn)畫(huà)線筆鋒效果詳細(xì)原理及示例代碼。文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
詳解C語(yǔ)言數(shù)組靈活多變的訪問(wèn)形式
這篇文章主要介紹了詳解C語(yǔ)言數(shù)組靈活多變的訪問(wèn)形式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
C++?qsort函數(shù)排序與冒泡模擬實(shí)現(xiàn)流程詳解
qsort是一個(gè)庫(kù)函數(shù),基于快速排序算法實(shí)現(xiàn)的一個(gè)排序的函數(shù),下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言qsort()函數(shù)使用的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-10-10

