this指针的作用和用法
生活随笔
收集整理的這篇文章主要介紹了
this指针的作用和用法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
由于C++中成員變量和成員函數是分開存儲的,所以每一個非靜態成員函數只會誕生一份函數實例,就是多個同類型的對象會共用一塊代碼,如果需要讓一塊代碼調用自己,可以用到this指針,this是C++提供的特殊的對象指針,不需要定義。
this指針指向被調用的成員函數所屬的對象
第一個用途:當形參和成員變量同名時,可以用this指針來區分
struct Member {Member(int score){this->score=score; //this->成員變量 = 形參}int score; }; int main() {Member n1(5);cout<<n1.score<<endl; //5 }當然如果形參和成員變量名字不一樣時,也可以不使用this指針
第二個用途:在類的非靜態成員函數中返回對象本身,可使用return *this,用于鏈式編程
struct Member {Member(int score){this->score=score;}Member& AddScore(Member& n) //這里如果不使用&的話,返回的雖然也是一個對象,但是這個對象不是n1了,是臨時創建出來的對象{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()函數返回的是一個對象,對這個對象取引用,則這個對象也就是n1
struct Member {Member(int score){this->score=score;}Member AddScore(Member& n) //這里沒有使用引用,返回的雖然也是一個對象,但是這個對象不是n1了,是臨時創建出來的對象{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()函數返回的是一個對象,但是沒有引用,則這個對象也就不是n1了,而是臨時創建出來的n1’,n1’中的AddScore()函數執行一次后返回的是n1’’
總結
以上是生活随笔為你收集整理的this指针的作用和用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CS01 BOM客制化屏幕增强
- 下一篇: 通过Buildroot自制根文件系统