把类成员改成指针_C++之this指针
生活随笔
收集整理的這篇文章主要介紹了
把类成员改成指针_C++之this指针
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
this指針概念說(shuō)明
前面一篇文章說(shuō)到成員變量和成員函數(shù)是分開(kāi)存儲(chǔ)的。
每一個(gè)非靜態(tài)成員函數(shù)只會(huì)誕生一份函數(shù)實(shí)例,也就是說(shuō)多個(gè)同類型的對(duì)象會(huì)共用一塊代碼。
那么問(wèn)題是:這一塊代碼是如何區(qū)分是哪個(gè)對(duì)象調(diào)用自己的呢?
C++通過(guò)特殊的對(duì)象指針,即this指針,解決上述問(wèn)題的。this指針指向被調(diào)用的成員函數(shù)所屬對(duì)象。
this指針是隱含每一個(gè)非靜態(tài)成員函數(shù)內(nèi)的一種指針。
this指針不需要定義,直接可以使用。
this指針的用途:
- 當(dāng)形參和成員變量同名時(shí),可以用this指針來(lái)區(qū)分
- 在類的非靜態(tài)成員函數(shù)中返回對(duì)象本身,可以使用return *this
示例代碼:
#include <iostream>using namespace std;class Person { public:Person(int age){m_Age = age; // 方式一// this->age = age; // 方式二 this指針指向被調(diào)用的成員函數(shù)所屬對(duì)象}Person& PersonAddAge(Person &p){this->m_Age += p.m_Age; // 將傳入對(duì)象的年齡和本身對(duì)象年齡想加 return *this; // this指向本身對(duì)象的指針,而*this指向的就是對(duì)象本體(相對(duì)于解引用)}int m_Age; // 方式一使用 // int age; // 方式二使用 };// 1.解決名稱沖突 void test01() {Person p1(18);cout << "p1 的年齡:" << p1.m_Age << endl; }// 2. 返回對(duì)象本身 void test02() {Person p1(10);Person p2(13);// 鏈?zhǔn)骄幊趟枷雙1.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指針的使用介紹,以及相關(guān)示例代碼。
總結(jié)
以上是生活随笔為你收集整理的把类成员改成指针_C++之this指针的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 余承东:鸿蒙智能座舱的车机天花板 23日
- 下一篇: c语言程序设计教程岳莉答案,C++程序设