帶你了解C++this指針的用法及其深究
前言
今天,碼神像一個新車手一樣,嘗試著用模板來更新一下,不要建議哦,畢竟沒有放棄愛情的拓海也不是真正的車神,哈哈,發(fā)車了
一、this指針是個什么東東,重要嗎?
首先,我以碼神的名義起誓,this指針絕對重要,尤其是對于c++這個面向?qū)ο缶幊痰恼Z言來說!
有的碼手可能要說了:你說重要就重要?那我還說不重要呢?
這個么,空口無憑,我現(xiàn)在來舉一個例子:
我們知道對于一個類來說,要有很多工作要做,其中類的成員函數(shù)可以訪問類的數(shù)據(jù)(限定符只是限定于類外的一些操作,類內(nèi)的一切對于成員函數(shù)來說都是透明的),那么成員函數(shù)如何知道哪個對象的數(shù)據(jù)成員要被操作呢,這時c++中的this指針就應(yīng)用而生了
注:
每個對象都擁有一個指針:this指針,通過this指針來訪問自己的地址。this指針不是對象的一部分,故sizeof不會體現(xiàn)出this指針的大小,this指針的類型取決于使用this指針的成員函數(shù)類型以及對象類型。

二、案例理解
代碼如下(示例):
#include<iostream>
using namespace std;
class Person
{
public:
Person(int age)
{
this->age=age;
//this指針指向被調(diào)用的成員函數(shù)所屬的對象
}
int age;
//int m_Age;
void PersonAddAge(Person &p)
{
this->age += p.age;
//this指向篇的指針,而*this指向的是篇這個本體
return *this;
}
}
//解決名稱沖突
void text01()
{
Person p1(18);
cout<<"p1age:"<<p1.age<<endl;
}
//返回對象本身用*this
void text02()
{
Person p1(10);
Person p2(10);
p2.PersonAddAge(p1);
cout<<"p2的age:"<<p2.age<<endl;//20
p2.PersonAddAge(p1).PersonAddAge(p1);
cout<<"p2的age:"<<p2.age<<endl;//30
//鏈式編程思想
}
int main()
{
text01();
text02();
return 0;
}
主要的用途
當(dāng)形參和成員變量同名時,可用this指針來區(qū)分
在類的非靜態(tài)成員函數(shù)中返回對象本身,可使用return *this
總結(jié) 通過上面我們知道在C++中成員變量和成員函數(shù)是分開存儲的每一個非靜態(tài)成員函數(shù)只會誕生一份函數(shù)實例,也就是說多個同類型的對象會共用一塊代碼c++通過提供特殊的對象指針,this指針,解決上述問題。this指針指向被調(diào)用的成員函數(shù)所屬的對象this指針是隱含每一個非靜態(tài)成員函數(shù)內(nèi)的一種指針this指針不需要定義,直接使用即可
最后:this指針指向被調(diào)用的成員函數(shù)所屬的對象
總結(jié)
本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
C語言簡明分析選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的使用
C語言條件控制語句選擇結(jié)構(gòu),是屬于計算機的語言編輯,有在C語言條件控制中的語句選擇結(jié)構(gòu)的存在,即是C語言條件控制語句選擇結(jié)構(gòu),循環(huán)控制語句是一個基于C語言的編程語句,該語句主要有while循環(huán)語句、do-while循環(huán)語句和for循環(huán)語句來實現(xiàn)循環(huán)結(jié)構(gòu)2022-04-04
C++?基本數(shù)據(jù)類型中int、long等整數(shù)類型取值范圍及原理分析
這篇文章主要介紹了C++?基本數(shù)據(jù)類型中int、long等整數(shù)類型取值范圍及原理分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11

