C++中this指針的介紹及使用實(shí)例講解
this指針的介紹及使用
1.this指針的作用
Cat &cmpAge(Cat &other) { if(other.age>age) return other; else return *this; }
用這個(gè)例子引出this指針:
指向當(dāng)前對(duì)象的一個(gè)指針,哪個(gè)對(duì)象調(diào)用成員函數(shù),this指針就指向該對(duì)象
示例代碼1:(this指針存放當(dāng)前對(duì)象的地址)
#include <iostream> using namespace std; /* 引入this指針:C++專(zhuān)門(mén)用來(lái)指向當(dāng)前對(duì)象地址的一個(gè)指針 當(dāng)前對(duì)象是誰(shuí),this指針就自動(dòng)存放了誰(shuí)的地址 當(dāng)前對(duì)象:誰(shuí)調(diào)用了成員函數(shù),誰(shuí)就是當(dāng)前對(duì)象 */ class Rect { public: /* 底層原理: 當(dāng)前對(duì)象.show(); Rect *this=&當(dāng)前對(duì)象 */ void show() { cout<<"this指針打印出來(lái)的地址是當(dāng)前對(duì)象的地址: "<<this<<endl; } }; int main(int argc,char **argv) { //創(chuàng)建矩形類(lèi)的對(duì)象 Rect r1; Rect r2; cout<<"r1的地址: "<<&r1<<endl; cout<<"r2的地址: "<<&r2<<endl; //當(dāng)前對(duì)象:誰(shuí)(r1)調(diào)用了成員函數(shù),誰(shuí)(r1)就是當(dāng)前對(duì)象 r1.show(); //當(dāng)前對(duì)象:誰(shuí)(r2)調(diào)用了成員函數(shù),誰(shuí)(r2)就是當(dāng)前對(duì)象 r2.show(); } /* 執(zhí)行結(jié)果: r1的地址: 0x7ffdf90a5cb6 r2的地址: 0x7ffdf90a5cb7 this指針打印出來(lái)的地址是當(dāng)前對(duì)象的地址: 0x7ffdf90a5cb6 this指針打印出來(lái)的地址是當(dāng)前對(duì)象的地址: 0x7ffdf90a5cb7 */
示例代碼2:(this指針的使用)
#include <iostream> using namespace std; /* 引入this指針:C++專(zhuān)門(mén)用來(lái)指向當(dāng)前對(duì)象地址的一個(gè)指針 當(dāng)前對(duì)象是誰(shuí),this指針就自動(dòng)存放了誰(shuí)的地址 定義方法:比較兩個(gè)矩形對(duì)象的大小(按照w和h比較,要求w,h都同時(shí)大于另外一個(gè)矩形),返回較大的那個(gè)對(duì)象 */ class Rect { public: //定義方法給w,h設(shè)置值,間接地使用w和h void setAttr(float _w,float _h); //比較兩個(gè)矩形的大小 Rect compare(Rect &other) { if((this->w)>other.w && (this->h)>other.h) { return *this; } else return other; } void show() { cout<<"寬: "<<w<<endl; cout<<"高: "<<h<<endl; } private: //屬性 float w; float h; }; void Rect::setAttr(float _w,float _h) { w=_w; h=_h; } int main(int argc,char **argv) { //創(chuàng)建矩形類(lèi)的對(duì)象 Rect r1; Rect r2; //設(shè)置寬高 r1.setAttr(9.8,5.6); r2.setAttr(1.2,0.5); //比較大小 //寫(xiě)法1:當(dāng)前對(duì)象就是r1 //Rect temp=r1.compare(r2); //temp.show(); //寫(xiě)法2:當(dāng)前對(duì)象就是r2 Rect temp=r2.compare(r1); temp.show(); } /* 執(zhí)行結(jié)果: 寬: 9.8 高: 5.6 */
2.this指針的寫(xiě)法
this->age //指針調(diào)用
(*this).age //this解引用
示例代碼:
#include <iostream> using namespace std; /* this指針平時(shí)寫(xiě)成員函數(shù)代碼,可以省略的 */ class Rect { public: void show() { } void setAttr(float _w,float _h) { //寫(xiě)法1:標(biāo)準(zhǔn)的寫(xiě)法-->寫(xiě)全面 //this->w=_w; //this->h=_h; //寫(xiě)法2:省略this的寫(xiě)法 w=_w; h=_h; } private: float w; float h; }; int main(int argc,char **argv) { Rect r1; Rect r2; r1.setAttr(1.2,0.8); }
到此這篇關(guān)于C++中this指針的介紹及使用的文章就介紹到這了,更多相關(guān)C++ this指針內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C/C++ 基礎(chǔ) 之回調(diào)函數(shù)示例詳解
這篇文章主要介紹了C/C++ 基礎(chǔ) 之回調(diào)函數(shù)示例詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2025-04-04C++中rapidjson將嵌套map轉(zhuǎn)為嵌套json的講解
今天小編就為大家分享一篇關(guān)于C++中rapidjson將嵌套map轉(zhuǎn)為嵌套json的講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-04-04關(guān)于C++復(fù)制構(gòu)造函數(shù)的實(shí)現(xiàn)講解
今天小編就為大家分享一篇關(guān)于關(guān)于C++復(fù)制構(gòu)造函數(shù)的實(shí)現(xiàn)講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12