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

一起來學(xué)習(xí)C++中類的this指針以使用

 更新時(shí)間:2022年03月01日 15:08:00   作者:∞大明白  
這篇文章主要為大家詳細(xì)介紹了C++中類的this指針以使用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

c++的類中,非靜態(tài)的成員函數(shù)都有一個(gè)隱藏的this指針,在函數(shù)體中所以的成員變量都是通過this指針來訪問的。但是this指針是對(duì)用戶是透明的,用戶不需要顯示的給this指針傳參,編譯時(shí)會(huì)自動(dòng)接收參數(shù)。

,this指針的注意點(diǎn)

  • 調(diào)用成員函數(shù)時(shí),不可以顯示給this指針傳參
  • 定義成員函數(shù)時(shí),不能顯示的聲明this指針
  • 在成員函數(shù)內(nèi)部,可以顯示的使用this指針

用一個(gè)日期類,來講述this指針的注意點(diǎn):

class Date
{
 public:
 void Print()
 {
  cout<<_year<<"/"<<_month<<"/"<<_day<<endl;
 }
 Date (int year,int month,int day)
 {
  _year=year;
  _month=month;
  _day=day;
 ]
 private:
 int _year;
 int _month;
 int _day;
}

以上就是一個(gè)日期類了,在類里面我定義了一個(gè)成員函數(shù)Print,這里要講一下,在類中定義一個(gè)成員函數(shù)可能會(huì)被看成內(nèi)聯(lián)函數(shù),想這么簡(jiǎn)單一個(gè)Print 函數(shù)一般是會(huì)別看成內(nèi)聯(lián)函數(shù)的。

其實(shí)這個(gè)成員函數(shù)還可以寫成這樣:

void Print()
{
 cout<<this->_year<<"/"<<this->_month<<"/"<<this->day<<endl;
}

這樣寫有點(diǎn)畫蛇添足的感覺,但是方便大家看,在成員函數(shù)中每個(gè)成員變量的訪問都里離不開this指針。這個(gè)this指針隱藏在函數(shù)形參的頭一位,也就是Print(Date * this)。

比如我要調(diào)用這個(gè)成員函數(shù):

int main()
{
 Date s1(2022,2,28);
 Date s2(2022,3,1);
 s1.Print();
 s2.Print();
}

運(yùn)行結(jié)果如下:

在這里插入圖片描述

可以看到,調(diào)用結(jié)果是符合預(yù)期的,Print函數(shù)中是利用this指針來區(qū)分對(duì)象的。

錯(cuò)誤用例:

(1)

int main()
{
 Date s1(2022,2,28);
 s1.Print(&s1);
}

不可以顯示的給this指針傳參,雖然我們知道this指針存在,但是我們不可以給this指針傳參,就當(dāng)潛規(guī)則吧。

(2)

void Date::Print(Date* this);

成員函數(shù)的聲明以及定義都不能有this指針,這樣做不行的,可以想想設(shè)計(jì)者的初心,他是嫌棄老是傳地址麻煩,所以搞了一個(gè)隱藏的this指針,你再給函數(shù)傳參或者定義函數(shù)時(shí)給this指針,不是多此一舉嘛。

二,this指針存在哪里

this指針是成員函數(shù)第一個(gè)隱藏的指針形參,一般存在棧中。但是也是由編譯器決定的,有的就存在寄存器中。

三,this指針的面試坑題

class A
{ 
public:
 void PrintA() 
 {
 cout<<_a<<endl;
 }
 void Show()
 {
 cout<<"Show()"<<endl;
 }
private:
 int _a;
};
int main()
{
 A* p = nullptr;
 p->PrintA(); 
 p->Show();
 }

問:以上程序可以運(yùn)行嘛?會(huì)崩潰嘛?崩潰在哪里?

在這里插入圖片描述

這是對(duì)空指針解引用導(dǎo)致的內(nèi)存問題,所以程序崩潰了,this指針可以為空,但是不能對(duì)空指針解引用,函數(shù)PrintA中,cout<<_a<;可以寫成cout<< this -> _a<; 講到這大家應(yīng)該懂了。

還有一點(diǎn)那么Show函數(shù)有問題嘛?沒問題,因?yàn)椴淮嬖趯?duì)this的解引用。

我們將PrintA函數(shù)屏蔽掉,看運(yùn)行結(jié)果:

在這里插入圖片描述

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!  

相關(guān)文章

  • C++ 虛函數(shù)與純虛函數(shù)的使用與區(qū)別

    C++ 虛函數(shù)與純虛函數(shù)的使用與區(qū)別

    本文主要介紹了C++ 虛函數(shù)與純虛函數(shù)的使用與區(qū)別,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C++使用鏈表存儲(chǔ)實(shí)現(xiàn)通訊錄功能管理

    C++使用鏈表存儲(chǔ)實(shí)現(xiàn)通訊錄功能管理

    這篇文章主要為大家詳細(xì)介紹了C++使用鏈表存儲(chǔ)實(shí)現(xiàn)通訊錄功能管理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 如何通過C++在Bing搜索引擎上進(jìn)行命令行搜索

    如何通過C++在Bing搜索引擎上進(jìn)行命令行搜索

    這篇文章主要介紹了通過C++在Bing搜索引擎上進(jìn)行命令行搜索,在這篇文章中,我們將介紹一個(gè)簡(jiǎn)單的C++程序,允許用戶通過命令行輸入搜索詞,在Bing搜索引擎上執(zhí)行搜索,并在默認(rèn)瀏覽器中顯示搜索結(jié)果,需要的朋友可以參考下
    2023-12-12
  • Dev-C++調(diào)試方法的具體使用

    Dev-C++調(diào)試方法的具體使用

    本文主要介紹了Dev-C++調(diào)試方法的具體使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Qt5.14.2使用虛擬鍵盤的關(guān)鍵代碼

    Qt5.14.2使用虛擬鍵盤的關(guān)鍵代碼

    對(duì)于Qwidget程序,使用qtvirtualkeyboard彈出鍵盤之后,鍵盤會(huì)浮于表面。使用VirtualkeyboardPushView模塊,自動(dòng)根據(jù)情況把輸入視圖往上面推移,這篇文章主要介紹了Qt5.14.2使用虛擬鍵盤的關(guān)鍵代碼,需要的朋友可以參考下
    2022-09-09
  • C++實(shí)現(xiàn)簡(jiǎn)單的HTTP服務(wù)器

    C++實(shí)現(xiàn)簡(jiǎn)單的HTTP服務(wù)器

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡(jiǎn)單的HTTP服務(wù)器的相關(guān)資料,感興趣的朋友可以參考下
    2016-05-05
  • C++的static關(guān)鍵字及變量存儲(chǔ)位置總結(jié)

    C++的static關(guān)鍵字及變量存儲(chǔ)位置總結(jié)

    今天看博文時(shí),看到了c++的static關(guān)鍵字的一些總結(jié),還涉及到了一些代碼的存儲(chǔ)位置;接下來為您詳細(xì)呈現(xiàn)
    2012-11-11
  • C++實(shí)現(xiàn)RSA加密解密算法是示例代碼

    C++實(shí)現(xiàn)RSA加密解密算法是示例代碼

    非對(duì)稱加密方式可以使通信雙方無需事先交換密鑰就可以建立安全通信,因此被廣泛應(yīng)用于身份認(rèn)證、數(shù)字簽名、等信息交換領(lǐng)域。其中最具有代表性的非對(duì)稱加密方式就是RSA公鑰密碼體制。本文將用C++實(shí)現(xiàn)RSA加密解密算法,需要的可以參考一下
    2022-09-09
  • C++執(zhí)行Linux Bash命令的方法

    C++執(zhí)行Linux Bash命令的方法

    今天小編就為大家分享一篇C++執(zhí)行Linux Bash命令的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Linux環(huán)境下段錯(cuò)誤的產(chǎn)生原因及調(diào)試方法小結(jié)

    Linux環(huán)境下段錯(cuò)誤的產(chǎn)生原因及調(diào)試方法小結(jié)

    借此機(jī)會(huì)系統(tǒng)學(xué)習(xí)了一下,這里對(duì)Linux環(huán)境下的段錯(cuò)誤做個(gè)小結(jié),方便以后同類問題的排查與解決
    2011-11-11

最新評(píng)論

大冶市| 榕江县| 荥阳市| 桐柏县| 镇沅| 临汾市| 南投市| 奎屯市| 漾濞| 图木舒克市| 田林县| 合山市| 青田县| 栾城县| 永城市| 手游| 深水埗区| 青铜峡市| 巴塘县| 房产| 周口市| 日土县| 梅河口市| 辽中县| 固安县| 泰和县| 安仁县| 临泽县| 馆陶县| 北海市| 扶绥县| 景洪市| 辉县市| 朔州市| 观塘区| 延边| 安徽省| 仙游县| 黑河市| 廊坊市| 新建县|