把类成员改成指针_C++之this指针
生活随笔
收集整理的這篇文章主要介紹了
把类成员改成指针_C++之this指针
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
this指針概念說明
前面一篇文章說到成員變量和成員函數是分開存儲的。
每一個非靜態成員函數只會誕生一份函數實例,也就是說多個同類型的對象會共用一塊代碼。
那么問題是:這一塊代碼是如何區分是哪個對象調用自己的呢?
C++通過特殊的對象指針,即this指針,解決上述問題的。this指針指向被調用的成員函數所屬對象。
this指針是隱含每一個非靜態成員函數內的一種指針。
this指針不需要定義,直接可以使用。
this指針的用途:
- 當形參和成員變量同名時,可以用this指針來區分
- 在類的非靜態成員函數中返回對象本身,可以使用return *this
示例代碼:
#include <iostream>using namespace std;class Person { public:Person(int age){m_Age = age; // 方式一// this->age = age; // 方式二 this指針指向被調用的成員函數所屬對象}Person& PersonAddAge(Person &p){this->m_Age += p.m_Age; // 將傳入對象的年齡和本身對象年齡想加 return *this; // this指向本身對象的指針,而*this指向的就是對象本體(相對于解引用)}int m_Age; // 方式一使用 // int age; // 方式二使用 };// 1.解決名稱沖突 void test01() {Person p1(18);cout << "p1 的年齡:" << p1.m_Age << endl; }// 2. 返回對象本身 void test02() {Person p1(10);Person p2(13);// 鏈式編程思想p1.PersonAddAge(p2).PersonAddAge(p2).PersonAddAge(p2);cout << "相加后 p1 的年齡:" << p1.m_Age << endl; }int main(int argc, char const *argv[]) {/* code */// test01();test02();return 0; }以上是this指針的使用介紹,以及相關示例代碼。
總結
以上是生活随笔為你收集整理的把类成员改成指针_C++之this指针的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 余承东:鸿蒙智能座舱的车机天花板 23日
- 下一篇: iPhone 14 Plus 机型最不受