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

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

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

先說結(jié)論:

1.形參和變量同名時(shí),可用this指針來區(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è)答案毫無意義

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

那怎么解決上述問題呢?如下圖:

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

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

大白話來講就是誰(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ù)本身,但是得注意返回值類型,記得做引用傳遞!?。?/p>

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(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)資料,希望通過本文能幫助大家實(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之旅開始了)[二]

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

    C 語(yǔ)言基礎(chǔ)教程(我的C之旅開始了)[二]...
    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ò)端口處于開放、關(guān)閉或監(jiān)聽狀態(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)論

    互助| 新竹县| 张北县| 法库县| 当阳市| 张家界市| 双流县| 玉树县| 盐亭县| 稻城县| 商洛市| 周至县| 临洮县| 项城市| 垣曲县| 呈贡县| 西华县| 山西省| 古蔺县| 稷山县| 大庆市| 碌曲县| 仙游县| 彝良县| 富裕县| 饶平县| 林口县| 济源市| 南木林县| 河北省| 金乡县| 西乌| 长兴县| 禄丰县| 彩票| 嵊州市| 新乡县| 托克托县| 弋阳县| 岑溪市| 辛集市|