this指针的作用和用法
由于C++中成員變量和成員函數(shù)是分開存儲的,所以每一個非靜態(tài)成員函數(shù)只會誕生一份函數(shù)實例,就是多個同類型的對象會共用一塊代碼,如果需要讓一塊代碼調(diào)用自己,可以用到this指針,this是C++提供的特殊的對象指針,不需要定義。
this指針指向被調(diào)用的成員函數(shù)所屬的對象
第一個用途:當(dāng)形參和成員變量同名時,可以用this指針來區(qū)分
struct Member {Member(int score){this->score=score; //this->成員變量 = 形參}int score; }; int main() {Member n1(5);cout<<n1.score<<endl; //5 }當(dāng)然如果形參和成員變量名字不一樣時,也可以不使用this指針
第二個用途:在類的非靜態(tài)成員函數(shù)中返回對象本身,可使用return *this,用于鏈?zhǔn)骄幊?/p> struct Member {Member(int score){this->score=score;}Member& AddScore(Member& n) //這里如果不使用&的話,返回的雖然也是一個對象,但是這個對象不是n1了,是臨時創(chuàng)建出來的對象{this->score+=n.score;return *this;}int score; }; int main() {Member n1(5);Member n2(100);Member n3(30);n1.AddScore(n2); //5+100=105n1.AddScore(n2).AddScore(n3);//105+100+30=235cout<<n1.score<<endl; //235 }
由于AddScore()函數(shù)返回的是一個對象,對這個對象取引用,則這個對象也就是n1
struct Member {Member(int score){this->score=score;}Member AddScore(Member& n) //這里沒有使用引用,返回的雖然也是一個對象,但是這個對象不是n1了,是臨時創(chuàng)建出來的對象{this->score+=n.score;return *this;}int score; }; int main() {Member n1(5);Member n2(100);Member n3(30);n1.AddScore(n2); //5+100=105n1.AddScore(n2).AddScore(n3);//105+100=205cout<<n1.score<<endl; //205 }
由于AddScore()函數(shù)返回的是一個對象,但是沒有引用,則這個對象也就不是n1了,而是臨時創(chuàng)建出來的n1’,n1’中的AddScore()函數(shù)執(zhí)行一次后返回的是n1’’
總結(jié)
以上是生活随笔為你收集整理的this指针的作用和用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CS01 BOM客制化屏幕增强
- 下一篇: 机器学习中关于偏差、方差和误差的理解