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

C++ 中的this指針詳解及實例

 更新時間:2017年07月10日 15:40:38   投稿:lqh  
這篇文章主要介紹了C++ 中的this指針詳解及實例的相關資料,this指針是類的一個自動生成、自動隱蔽的私有成員,它存在于類的非靜態(tài)成員中,指向被調用函數(shù)所在的對象。需要的朋友可以參考下

C++ this 指針詳解

學習 C++ 的指針既簡單又有趣。通過指針,可以簡化一些 C++ 編程任務的執(zhí)行,還有一些任務,如動態(tài)內存分配,沒有指針是無法執(zhí)行的。所以,想要成為一名優(yōu)秀的 C++ 程序員,學習指針是很有必要的。

正如您所知道的,每一個變量都有一個內存位置,每一個內存位置都定義了可使用連字號(&)運算符訪問的地址,它表示了在內存中的一個地址。

this指針是類的一個自動生成、自動隱蔽的私有成員,它存在于類的非靜態(tài)成員中,指向被調用函數(shù)所在的對象。

全局僅有一個this指針,當一個對象被創(chuàng)建時,this指針就存放指向對象數(shù)據(jù)的首地址。

class Ctest
{
public:
 void Funtest(int iValue)
 {
  _iValue = iValue;
 }
 void Print()
 {
  cout << _iValue << endl;
 }
private:
 int _iValue;//調用私有變量只能用公有成員接收,成員變量在類中具有全局作用域
};

int main()
{
 Ctest test;
 test.Funtest(30);
 test.Print();
 system("pause\n");
 return 0;
}

我們來觀察對Funtest函數(shù)的調用,test.Funtest(),在這里,我們運用了點運算符來訪問test對象的Funtest成員,然后調用它。

當我們調用某個成員函數(shù)時,實際上是在替某個對象調用它。如果Funtest指向Ctest的成員(例如iValue),則它隱式地指向調用該函數(shù)的對象的成員。

成員函數(shù)通過一個名為this的額外的隱式參數(shù)來訪問調用它的那個對象。當我們調用那個函數(shù)時,用請求該函數(shù)的對象地址初始化this.例如:如果調用

test.Funtest(),則編譯器負責把test的地址傳遞給Funtest的隱式形參this??梢缘葍r的認為編譯器將該調用重寫成了如下形式:

//此處只用于說明調用成員函數(shù)實際執(zhí)行過程
Ctest::Funtest(&test)

在成員函數(shù)內部,我們可以直接使用調用該函數(shù)的成員,而無需通過成員訪問運算符來做到,因為this指針所指的正是這個對象。任何對類成員的直接訪問都 被看做是this指針的隱式引用,上面的程序可認為是this->iValue.

this形參是隱式定義的,實際上,任何自定義名為this的參數(shù)或變量的行為都是非法的.所以,F(xiàn)untest函數(shù)的定義相當于是

void Funtest(Ctest *const this,int *iVlue)
{
 this->_iValue = iValue;
}

this是一個常量指針,不允許改變this中保存的地址

this指針的兩種傳參方式:

1.參數(shù)壓棧:當成員函數(shù)的參數(shù)可變時,遵循_cdecl調用約定
2.ecx寄存器:當成員函數(shù)的參數(shù)固定時,這時遵循_thiscall調用約定。

當this指針為NULL時編譯器可編譯通過

class Ctest
{
 public:
 void Funtest()
{}
}
 int main()
{
 Ctest *p = NULL;
 p->Funtest();
}

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關文章

  • C語言超詳細講解棧的實現(xiàn)及代碼

    C語言超詳細講解棧的實現(xiàn)及代碼

    棧(stack)又名堆棧,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。這一端被稱為棧頂,相對地,把另一端稱為棧底。向一個棧插入新元素又稱作進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素
    2022-04-04
  • C++多線程基礎理論詳解

    C++多線程基礎理論詳解

    這篇文章主要介紹了C++多線程基礎理論,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • 一個快速排序算法代碼分享

    一個快速排序算法代碼分享

    一個快速排序算法代碼一個快速排序算法代碼,代碼內有注釋,大家參考使用吧
    2014-01-01
  • c語言分離三位數(shù)的實現(xiàn)

    c語言分離三位數(shù)的實現(xiàn)

    這篇文章主要介紹了c語言分離三位數(shù)的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 用typedef定義類型詳細總結

    用typedef定義類型詳細總結

    用typedef可以聲明各種類型名,但不能用來定義變量,用typedef可以聲明數(shù)組類型、字符串類型、使用比較方便
    2013-10-10
  • C語言如何實現(xiàn)翻轉字符串中的單詞

    C語言如何實現(xiàn)翻轉字符串中的單詞

    這篇文章主要介紹了C語言如何實現(xiàn)翻轉字符串中的單詞,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • C語言實現(xiàn)小貓釣魚游戲

    C語言實現(xiàn)小貓釣魚游戲

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)小貓釣魚游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 用C語言實現(xiàn)掃雷小游戲

    用C語言實現(xiàn)掃雷小游戲

    這篇文章主要為大家詳細介紹了用C語言實現(xiàn)掃雷小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • 深入探索C++中stack和queue的底層實現(xiàn)

    深入探索C++中stack和queue的底層實現(xiàn)

    這篇文章主要介紹了C++中的stack和dequeue的底層實現(xiàn),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • C++實現(xiàn)學生宿舍管理系統(tǒng)

    C++實現(xiàn)學生宿舍管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)學生宿舍管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評論

洪江市| 庆云县| 明溪县| 赤峰市| 兰溪市| 安岳县| 驻马店市| 溧水县| 右玉县| 濉溪县| 姜堰市| 大城县| 承德县| 永善县| 高台县| 偃师市| 南昌县| 龙口市| 梁山县| 嘉鱼县| 改则县| 威远县| 阿鲁科尔沁旗| 龙口市| 平乡县| 河津市| 南陵县| 滁州市| 镇原县| 永胜县| 遵化市| 田阳县| 柳林县| 平乐县| 团风县| 武乡县| 南部县| 大名县| 安丘市| 蓬安县| 沽源县|