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

C++ 中this指針的用途詳解

 更新時(shí)間:2021年09月29日 10:52:36   作者:程序員小白?。?!  
這篇文章主要給大家介紹了關(guān)于C++ 中this指針的用途,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C++具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

先說(shuō)結(jié)論:

1.形參和變量同名時(shí),可用this指針來(lái)區(qū)分

2.在類的非靜態(tài)成員函數(shù)中返回本身,可用return *this

1.區(qū)分形參和變量同名時(shí):

#include <iostream>
using namespace std;
class Person
{
public:
	Person(int age)
	{
		age = age;
	}
	int age;
};
void test01()
{
	Person p1(18);
	cout << "年齡為: " << p1.age << endl;
}
int main()
{
	test01();
	system("pause");
	return 0;
}

上述代碼運(yùn)行結(jié)果多少呢? 答案是-858993460 當(dāng)然這個(gè)答案毫無(wú)意義

為什么呢 將上述代碼中的age選中 然后會(huì)有下面這種情況 相信大家知道什么意思 就是編譯器不會(huì)像人腦一樣將左邊的age看成類的屬性age,所以就導(dǎo)致編譯器認(rèn)為上述3個(gè)age是一回事,所以再編譯器中相當(dāng)于Person類的屬性age沒(méi)有賦值,所以進(jìn)行輸出的時(shí)候就會(huì)用0xCCCCCCCC來(lái)進(jìn)行填充,就有了輸出是-858993460的答案

那怎么解決上述問(wèn)題呢?如下圖:

在第一個(gè)age前面加上this,什么意思呢看看官方解釋:

this指針指向被調(diào)用的成員函數(shù)所屬的對(duì)象!

大白話來(lái)講就是誰(shuí)調(diào)用這個(gè)類,this就指向誰(shuí),上述這個(gè)this指向的就是p1

當(dāng)然這種錯(cuò)誤的解決方法還有一種最簡(jiǎn)單的:在類中起屬性名字的時(shí)候,盡量別和形參名取一樣就好了

2.return *this返回函數(shù)本身

#include <iostream>
using namespace std;
class Person
{
public:
	Person(int age)
	{
		m_age = age;
	}
	Person& PersonAddAge(Person &p)
	{
		this->m_age += p.m_age;
		return *this;
	}
	int m_age;
};
void test02()
{
	Person p1(18);
	Person p2(18);
	p1.PersonAddAge(p2).PersonAddAge(p2).PersonAddAge(p2);  
	cout << p1.m_age << endl;
}
int main()
{
	test02();
	system("pause");
	return 0;
}

下面的塊代碼中:這塊代碼中有兩個(gè)點(diǎn)

1.返回值類型使用了Person的引用

2.return *this

Person& PersonAddAge(Person &p)
{
	this->m_age += p.m_age;
	return *this;
}

A1:為什么要使用Person&的返回值

return *this就是返回函數(shù)本身,但是得注意返回值類型,記得做引用傳遞?。?!

總結(jié)

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

  • C++ 實(shí)現(xiàn)優(yōu)先隊(duì)列的簡(jiǎn)單實(shí)例

    C++ 實(shí)現(xiàn)優(yōu)先隊(duì)列的簡(jiǎn)單實(shí)例

    這篇文章主要介紹了C++ 實(shí)現(xiàn)優(yōu)先隊(duì)列的簡(jiǎn)單實(shí)例的相關(guān)資料,希望通過(guò)本文能幫助大家實(shí)現(xiàn)優(yōu)先隊(duì)列,需要的朋友可以參考下
    2017-08-08
  • cocos2d-x學(xué)習(xí)筆記之CCLayer、CCLayerColor、CCLayerGradient、CCLayerMultiplex場(chǎng)景層介紹

    cocos2d-x學(xué)習(xí)筆記之CCLayer、CCLayerColor、CCLayerGradient、CCLayerMu

    這篇文章主要介紹了cocos2d-x學(xué)習(xí)筆記之CCLayer、CCLayerColor、CCLayerGradient、CCLayerMultiplex場(chǎng)景層介紹,需要的朋友可以參考下
    2014-09-09
  • C 語(yǔ)言基礎(chǔ)教程(我的C之旅開(kāi)始了)[二]

    C 語(yǔ)言基礎(chǔ)教程(我的C之旅開(kāi)始了)[二]

    C 語(yǔ)言基礎(chǔ)教程(我的C之旅開(kāi)始了)[二]...
    2007-02-02
  • C語(yǔ)言共用體union作用使用示例教程

    C語(yǔ)言共用體union作用使用示例教程

    這篇文章主要為大家介紹了C語(yǔ)言共用體union作用的使用示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-02-02
  • 詳解C++11 變參模板

    詳解C++11 變參模板

    這篇文章主要介紹了C++11 變參模板的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c++11,感興趣的朋友可以了解下
    2020-08-08
  • C語(yǔ)言中字符串的內(nèi)存地址操作的相關(guān)函數(shù)簡(jiǎn)介

    C語(yǔ)言中字符串的內(nèi)存地址操作的相關(guān)函數(shù)簡(jiǎn)介

    這篇文章主要介紹了C語(yǔ)言中字符串的內(nèi)存地址操作的相關(guān)函數(shù),包括bcopy()函數(shù)和bzero()函數(shù)以及bcmp()函數(shù),需要的朋友可以參考下
    2015-08-08
  • C++11新特性中auto 和 decltype 區(qū)別和聯(lián)系

    C++11新特性中auto 和 decltype 區(qū)別和聯(lián)系

    這篇文章主要介紹了C++11新特性中auto 和 decltype 區(qū)別和聯(lián)系的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • C++ Boost實(shí)現(xiàn)異步端口掃描器詳解

    C++ Boost實(shí)現(xiàn)異步端口掃描器詳解

    端口掃描是一種用于識(shí)別目標(biāo)系統(tǒng)上哪些網(wǎng)絡(luò)端口處于開(kāi)放、關(guān)閉或監(jiān)聽(tīng)狀態(tài)的網(wǎng)絡(luò)活動(dòng),本文將運(yùn)用Boost框架實(shí)現(xiàn)一個(gè)基于TCP的掃描工具,有需要的小伙伴可以參考下
    2023-11-11
  • C/C++編譯器GCC下的常用編譯命令總結(jié)

    C/C++編譯器GCC下的常用編譯命令總結(jié)

    這篇文章主要介紹了C/C++編譯器GCC下的常用編譯命令總結(jié),本文的示例環(huán)境為L(zhǎng)inux系統(tǒng),需要的朋友可以參考下
    2015-08-08
  • 最新評(píng)論

    宕昌县| 景宁| 余江县| 二手房| 乌苏市| 客服| 平山县| 和政县| 逊克县| 涟水县| 呼玛县| 五原县| 富川| 福州市| 海口市| 松潘县| 宜兰市| 东乡县| 宽甸| 克拉玛依市| 陇川县| 仙游县| 拉萨市| 连云港市| 区。| 长宁区| 鲁山县| 鹤山市| 乐山市| 长兴县| 年辖:市辖区| 徐闻县| 秀山| 海口市| 安福县| 昌邑市| 南通市| 泰兴市| 二手房| 承德市| 东平县|