最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++中關(guān)于this指針的入門介紹

 更新時(shí)間:2022年07月08日 08:36:20   作者:幻荼  
this?指針在C++類和對(duì)象中是個(gè)很方便實(shí)用的關(guān)鍵字,可以簡(jiǎn)化對(duì)象成員屬性的調(diào)用,使代碼表達(dá)的含義更加準(zhǔn)確;在之前的學(xué)習(xí)中我們都可以判斷變量所占內(nèi)存空間大小,那么我們創(chuàng)建的類對(duì)象所占的內(nèi)存空間怎么計(jì)算呢?想知道this的妙用和類對(duì)象占用的內(nèi)存空間就來跟我學(xué)習(xí)吧

簡(jiǎn)介

C++編譯器給每個(gè)“非靜態(tài)的成員函數(shù)“增加了一個(gè)隱藏的指針參

數(shù),讓該指針指向當(dāng)前對(duì)象(函數(shù)運(yùn)行時(shí)調(diào)用該函數(shù)的對(duì)象),在函數(shù)體中所有成員變量的操作,都是通過該指針去訪問。只不過所有的操作對(duì)用戶是透明的,即用戶不需要來傳遞,編譯器自動(dòng)完成

特性

1. this指針的類型:類類型* const

2. 只能在“成員函數(shù)”的內(nèi)部使用

3. this指針本質(zhì)上其實(shí)是一個(gè)成員函數(shù)的形參,是對(duì)象調(diào)用成員函數(shù)時(shí),將對(duì)象地址作為實(shí)參傳遞給this

形參。所以對(duì)象中不存儲(chǔ)this指針。

4. this指針是成員函數(shù)第一個(gè)隱含的指針形參,一般情況由編譯器通過ecx寄存器自動(dòng)傳遞,不需要用戶傳遞

舉例

class Data {
public:
	void Printf()
	{
		cout << _year <<" "<<" "<< _month <<" "<< _day << endl;
	}
	void Init(int year=2022,int month=5,int day=25)
	{
		_year = year;
		_month = month;
		_day = day;
	}
private:
	int _year;
	int _month;
	int _day;
};
int main()
{
	Data d1,d2;
	d1.Init(2022,1,1);
	d1.Printf();
	d2.Init(2022,2,2);
	d2.Printf();
	return 0;
}

這是一個(gè)簡(jiǎn)單的日期類,那么這里有一個(gè)問題,我們?cè)谑褂么蛴『瘮?shù)Printf和初始化函數(shù)Init的時(shí)候,d1和d2調(diào)用的是同一個(gè)函數(shù),那么編譯器是怎么知道我是應(yīng)該設(shè)置/打印d1還是d2呢?

這其實(shí)就使用了this指針

那么具體編譯器是怎么做的呢?

void Printf(const* this)//編譯器實(shí)際上處理的
	{
		cout << this->_year << " " << this->_month << " " << this->_day << endl;
	}
	void Printf()//我們看到的
	{
		cout << _year <<" "<<" "<< _month <<" "<< _day << endl;
	}
void Init(const* this,int year=2022,int month=5,int day=25)//編譯器處理的
	{
		this->_year = year;
		this->_month = month;
		this->_day = day;
	}
	void Init(int year = 2022, int month = 5, int day = 25)//我們看到的
	{
		_year = year;
		_month = month;
		_day = day;
	}
d1.Init(2022,1,1);//我們看到的
	d1.Init(&d1,2022, 1, 1);//編譯器實(shí)際上處理的

實(shí)際上編輯器取了d1和d2函數(shù)的地址,然后傳遞給了const*this,這樣編譯器就能自動(dòng)打印和初始化相應(yīng)的結(jié)構(gòu)了。

注意

我們不能自己在傳參處加const*this和&,這是編譯器自己做的,我們不能搶了編譯器的活,即使做了,編譯也不會(huì)通過,但是里面我們可以加

void Printf(const* this)//錯(cuò)誤
	{
		cout << _year <<" "<<" "<< _month <<" "<< _day << endl;
	}
void Printf()//可以運(yùn)行,但是編譯器默認(rèn)都會(huì)加this->,所以我們可以不用加,加了也沒事
	{
		cout <<this-> _year <<" "<<" "<< this->_month <<" "<< this->_day << endl;
	}

到此這篇關(guān)于C++中關(guān)于this指針的入門介紹的文章就介紹到這了,更多相關(guān)C++ this指針內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解C++虛函數(shù)的工作原理

    詳解C++虛函數(shù)的工作原理

    這篇文章主要介紹了C++虛函數(shù)的工作原理的的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • C語(yǔ)言的多級(jí)指針你了解嗎

    C語(yǔ)言的多級(jí)指針你了解嗎

    這篇文章主要介紹了C語(yǔ)言中的多級(jí)指針,本文給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下,希望能給你帶來幫助
    2021-08-08
  • C++11實(shí)現(xiàn)字符串分割的示例

    C++11實(shí)現(xiàn)字符串分割的示例

    本文主要介紹了C++11實(shí)現(xiàn)字符串分割的示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C++多線程編程時(shí)的數(shù)據(jù)保護(hù)

    C++多線程編程時(shí)的數(shù)據(jù)保護(hù)

    這篇文章主要介紹了C++多線程編程時(shí)的數(shù)據(jù)保護(hù),作者針對(duì)C++11版本中的新特性做出了一些解說,需要的朋友可以參考下
    2015-07-07
  • cmake跨平臺(tái)構(gòu)建工具的學(xué)習(xí)筆記

    cmake跨平臺(tái)構(gòu)建工具的學(xué)習(xí)筆記

    CMake是一個(gè)跨平臺(tái)的安裝/編譯工具,通過CMake我們可以通過簡(jiǎn)單的語(yǔ)句來描述所有平臺(tái)的安裝/編譯過程,下面這篇文章主要給大家介紹了關(guān)于cmake跨平臺(tái)構(gòu)建工具的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • c++打印封裝每次打印前面加上時(shí)間戳問題

    c++打印封裝每次打印前面加上時(shí)間戳問題

    這篇文章主要介紹了c++打印封裝每次打印前面加上時(shí)間戳問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • C++中的拷貝構(gòu)造詳解

    C++中的拷貝構(gòu)造詳解

    這篇文章主要為大家介紹了C++中的拷貝構(gòu)造,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • C/C++實(shí)現(xiàn)八大排序算法匯總

    C/C++實(shí)現(xiàn)八大排序算法匯總

    這篇文章主要為大家詳細(xì)介紹了C/C++實(shí)現(xiàn)八大排序算法匯總,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • C++操作文件進(jìn)行讀取、刪除、修改指定行

    C++操作文件進(jìn)行讀取、刪除、修改指定行

    今天小編就為大家分享一篇關(guān)于C++操作文件進(jìn)行讀取、刪除、修改指定行,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 簡(jiǎn)述C++中虛擬函數(shù)的內(nèi)存分配機(jī)制

    簡(jiǎn)述C++中虛擬函數(shù)的內(nèi)存分配機(jī)制

    這篇文章主要介紹了簡(jiǎn)述C++中虛擬函數(shù)的內(nèi)存分配機(jī)制,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下
    2020-08-08

最新評(píng)論

乃东县| 义马市| 庆元县| 桐城市| 湘潭县| 安平县| 故城县| 湟源县| 乌拉特中旗| 巴塘县| 汤阴县| 鄂州市| 炎陵县| 八宿县| 江口县| 萨迦县| 永昌县| 登封市| 丰城市| 鄂温| 塔城市| 灵石县| 霍州市| 冕宁县| 昆山市| 越西县| 浮山县| 平远县| 淮北市| 汝南县| 阿克苏市| 措勤县| 桐柏县| 华坪县| 门头沟区| 金溪县| 西贡区| 宝兴县| 泸州市| 土默特右旗| 嘉禾县|