中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

成都網(wǎng)站制作怎么樣網(wǎng)絡(luò)營銷網(wǎng)站建設(shè)

成都網(wǎng)站制作怎么樣,網(wǎng)絡(luò)營銷網(wǎng)站建設(shè),ppt模板免費(fèi)下載 素材學(xué)生版,易樂自助建站文章目錄 一、this指針的引出二、this指針的特性【面試題】 一、this指針的引出 我們先來定義一個(gè)日期類Date,下面這段代碼執(zhí)行的結(jié)果是什么呢? class Date { public:void Init(int year, int month, int day){_year year;_month month;_day day;}v…

文章目錄

    • 一、this指針的引出
    • 二、this指針的特性
      • 【面試題】

一、this指針的引出

  • 我們先來定義一個(gè)日期類Date,下面這段代碼執(zhí)行的結(jié)果是什么呢?
class Date
{
public:void Init(int year, int month, int day){_year = year;_month = month;_day = day;}void print(){cout << _year << "-" << _month << "-" << _day << endl;}
private:int _year; int _month; int _day; 
};
int main()
{Date d1, d2;d1.Init(2022, 5, 11);d2.Init(2022, 5, 12);d1.print();d2.print();return 0;
}
  • 可以看到分別打印出了兩個(gè)日期,它是怎么知道改打印哪個(gè)的?

在這里插入圖片描述

  • 我們來分析一下,先看一下匯編代碼,看一看

在這里插入圖片描述


  • 我們看到上面的代碼是調(diào)用的同一個(gè)函數(shù),那么編譯器是如何知道那兩個(gè)日期的?

  • 其實(shí)C++里有一個(gè)隱形this指針,在微軟的官方文檔也有說明

  • 在使用函數(shù)的時(shí)候其實(shí)里面傳了一個(gè)地址,然后有一個(gè)隱的this指針來接收


原形是這樣:

在這里插入圖片描述

在這里插入圖片描述

  • 那為什么這里報(bào)錯(cuò)了呢?
  • 因?yàn)椴槐匾獙?#xff0c;這個(gè)是隱含的~~,我們可以直接在類里面使用

二、this指針的特性

  • 剛剛上面也給你看了原形,細(xì)心的烙鐵已經(jīng)發(fā)現(xiàn)了,這個(gè)this指針是有一個(gè)const修飾的,而且這個(gè)const是在*的右邊

在這里插入圖片描述

  • 這里的const修飾,我在C語言的指針部分已經(jīng)講過了—>指針章節(jié)

  • 下面我們回憶一下~

在這里插入圖片描述

  • 到這里就得出的this本身是不被修改的,但是做指向的值是可以被修改

  • 我們可以在類中打印一下this指針的地址,再打印一下d1和d2的地址,我們來看一下:

在這里插入圖片描述

  • 得到結(jié)果就是this指針指向一個(gè)指向當(dāng)前對象的指針

  • 我們還可以下面這樣,是不會報(bào)錯(cuò)的,但是不能向上面直接在形參就寫上

在這里插入圖片描述

特點(diǎn):

1、形參和實(shí)參的位置,我們不能顯示寫
2、函數(shù)內(nèi)部可以使用


  • 最后總結(jié)一下:
  1. this指針的類型:類型 *const,即成員函數(shù)中,不能給this指針賦值。
  2. 只能在“成員函數(shù)”的內(nèi)部使用
  3. this指針本質(zhì)上是“成員函數(shù)”的形參,當(dāng)對象調(diào)用成員函數(shù)時(shí),將對象地址作為實(shí)參傳遞給this形參。所以對象中不存儲this指針。
  4. this指針是“成員函數(shù)”第一個(gè)隱含的指針形參,一般情況由編譯器通過ecx寄存器自動傳遞,不需要用戶傳遞

【面試題】

  1. this指針存在哪里?

a、堆 b、棧 c、靜態(tài)區(qū) d、常量區(qū) e、對象里面

  • 首先排除e,因?yàn)槲覀冎?#xff0c;在算類里的對象的時(shí)候是沒有算this指針的大小,所以排除e
  • C++的const變量不是在常量區(qū),可以看到這兩個(gè)地址是挨著的

在這里插入圖片描述

  • 那么什么在常量區(qū)呢?是const修飾的值在常量區(qū),這個(gè)指針變量在棧區(qū),指向了這個(gè)常量區(qū)的字符串的首字符,所以d也就排除

在這里插入圖片描述

  • c就更不可能了,static和全局的才在靜態(tài)區(qū)

  • a也可以排除,因?yàn)閙alloc的才在堆,這里不是malloc,所以排除

  • 最后就是在棧上,因?yàn)?strong>是一個(gè)形參(有些編譯比如vs可能會用寄存器存儲)。不同的編譯器放在不同的位置,可能是棧,也可能是寄存器,(VC++編譯器是放在ECX中,其它編譯器有可能不同,也就是成員函數(shù)的其它參數(shù)正常都是存放在棧中。而this指針參數(shù)則是存放在寄存器中。)

  • 打開匯編我們也可以看到這里的lea就是load effective address【加載有效地址】,是存在ecx的值加載到 [d1]

在這里插入圖片描述

  1. this指針可以為空嗎?

下面我們來看兩道題來解決這個(gè)問題的答案~


第一道:下面程序編譯運(yùn)行結(jié)果是? A、編譯報(bào)錯(cuò) B、運(yùn)行崩潰 C、正常運(yùn)行

class A
{
public:void Print(){cout << "Print()" << endl;}
private:int _a;
};
int main()
{A* p = nullptr;p->Print();return 0;
}
  • 已經(jīng)完美運(yùn)行了,因?yàn)槲疫@里沒有訪問類里的對象,所以可以正常運(yùn)行

在這里插入圖片描述


第二道:下面程序編譯運(yùn)行結(jié)果是? A、編譯報(bào)錯(cuò) B、運(yùn)行崩潰 C、正常運(yùn)行

class A
{
public:void PrintA(){cout << _a << endl;}
private:int _a;
};int main()
{A* p = nullptr;p->PrintA();return 0;
}
  • 這里引發(fā)了空指針,因?yàn)槲倚枰蛴∵@里的_a,就要找到那塊空間

在這里插入圖片描述

  • 也就可以寫成這樣,this指針是空指針,解引用就會報(bào)錯(cuò)

在這里插入圖片描述

  • 所以this指針是可以為空的,只要在成員函數(shù)內(nèi)部不訪問其內(nèi)容,程序可以正常執(zhí)行的。

最后本篇文章介紹了C++中隱含的this指針,特性,看完希望你學(xué)有所成!!!

http://www.risenshineclean.com/news/50197.html

相關(guān)文章:

  • 計(jì)算機(jī)應(yīng)用軟件開發(fā)百度愛采購優(yōu)化排名軟件
  • 公司手機(jī)網(wǎng)站制作seo收費(fèi)標(biāo)準(zhǔn)
  • 食品網(wǎng)站建設(shè)方案項(xiàng)目書百度推廣獲客成本大概多少
  • wordpress搜索標(biāo)簽頁seo推廣軟件排行榜前十名
  • 一家只做代購的網(wǎng)站百度網(wǎng)盤app
  • 網(wǎng)站設(shè)計(jì)主題中文成都建設(shè)網(wǎng)官網(wǎng)
  • 最近一周新聞seo廣州工作好嗎
  • 備案網(wǎng)站內(nèi)容怎么寫寧波seo關(guān)鍵詞排名
  • yourphp企業(yè)網(wǎng)站管理系統(tǒng)抖音的商業(yè)營銷手段
  • WordPress 種子搜索seozou是什么意思
  • 汝南網(wǎng)站建設(shè)邵陽做網(wǎng)站的公司
  • 優(yōu)秀的手機(jī)網(wǎng)站品牌全案策劃
  • wordpress 上傳下載seo教程免費(fèi)
  • 網(wǎng)站怎么做導(dǎo)航條南寧seo推廣服務(wù)
  • 網(wǎng)站設(shè)計(jì)制作開發(fā)網(wǎng)銷是什么工作好做嗎
  • 網(wǎng)站圖片如何優(yōu)化權(quán)威解讀當(dāng)前經(jīng)濟(jì)熱點(diǎn)問題
  • 怎么做垂直門戶網(wǎng)站百度廣告位價(jià)格
  • 玉林做網(wǎng)站優(yōu)化推廣天津百度推廣網(wǎng)絡(luò)科技公司
  • 找貨源的網(wǎng)上平臺有哪些合肥seo代理商
  • 湘潭sem優(yōu)化價(jià)格陽東網(wǎng)站seo
  • html動態(tài)網(wǎng)站怎么做如何做個(gè)人網(wǎng)站
  • 設(shè)計(jì)網(wǎng)站排名上海網(wǎng)絡(luò)推廣外包公司
  • 成都蜀美網(wǎng)站建設(shè)網(wǎng)頁制作代碼
  • wordpress 按別名寧波企業(yè)seo服務(wù)
  • 個(gè)人有限公司注冊流程商品關(guān)鍵詞怎么優(yōu)化
  • 有哪些可以做威客的網(wǎng)站月入百萬的游戲代理
  • 網(wǎng)盤怎么做電影網(wǎng)站seo是什么職務(wù)
  • 網(wǎng)站登錄密碼保存在哪里設(shè)置免費(fèi)可用的網(wǎng)站源碼
  • 注銷網(wǎng)站和取消接入windows優(yōu)化大師是病毒嗎
  • 網(wǎng)站建設(shè)發(fā)展現(xiàn)狀網(wǎng)站seo課程