C++簡明圖解this指針的使用
c++的封裝性:將數(shù)據(jù) 和 方法 封裝在一起
數(shù)據(jù) 和 方法 是分開存儲。
每個對象 擁有獨立的數(shù)據(jù).
每個對象 共享同一個方法。
成員數(shù)據(jù)和成員函數(shù)的存儲方式
1、成員函數(shù)不占類的空間
2、靜態(tài)成員數(shù)據(jù)不占類的空間

this指針的引入
class Data
{
public:
    int m_num;
 
    void setNum(int num)
    {
        m_num = num;
    }
};
void test01()
{
    Data ob1;
    ob1.setNum(10);
    cout<<"ob1.m_num = "<<ob1.m_num<<endl;
    Data ob2;
    ob2.setNum(20);
    cout<<"ob2.m_num = "<<ob2.m_num<<endl;
    Data ob3;
    ob3.setNum(30);
    cout<<"ob3.m_num = "<<ob3.m_num<<endl;
}運行結果:

this指針概述
1、對象調(diào)用普通成員函數(shù) 在成員函數(shù)內(nèi)部會產(chǎn)生一個指向該對象的this指針(this指針變量 是系統(tǒng)定義的)
2、this指針的目的:說明當前成員函數(shù) 是屬于哪個對象的
3、靜態(tài)成員函數(shù)內(nèi)部 沒有this指針

class Data
{
public:
    int m_num;
    void setNum(int num)
    {
        //m_num = num;
        this->m_num = num;
    }
};
void test01()
{
    Data ob1;
    ob1.setNum(10);
    cout<<"ob1.m_num = "<<ob1.m_num<<endl;
    Data ob2;
    ob2.setNum(20);
    cout<<"ob2.m_num = "<<ob2.m_num<<endl;
    Data ob3;
    ob3.setNum(30);
    cout<<"ob3.m_num = "<<ob3.m_num<<endl;
}運行結果:

注意:
1、this指針是隱含在對象成員函數(shù)內(nèi)的一種指針
2、成員函數(shù)通過 this指針 即可知道操作的是那個對象的數(shù)據(jù)(定位對象)
3、靜態(tài)成員函數(shù)內(nèi)部沒有this指針,靜態(tài)成員函數(shù)不能操作非靜態(tài)成員變量
(靜態(tài)成員函數(shù) 是屬于類 函數(shù)內(nèi)部 沒有this指針)
this指針的使用
1、當形參和成員變量同名時,可用this指針來區(qū)分
class Data
{
public:
    int num;
    //形參 和成員名相同
    void setNum(int num)
    {
        //形參num
        //成員num  this->num
        //num= num;//就近原則 形參num 賦值給 形參num
        this->num = num;
        //將形參num 賦值給 對象中成員num
    }
};2、在類的普通成員函數(shù)中返回對象本身(*this)(重要)
class MyCout
{
public:
    MyCout& myCout(char *str)
    {
        cout<<str;
        return *this;//*this 代表就是 當前調(diào)用該函數(shù)的對象
    }
};
int main(int argc, char *argv[])
{
    MyCout ob;
    /*
    ob.myCout("hehe");
    ob.myCout("haha");
    ob.myCout("xixi");*/
    ob.myCout("hehe").myCout("haha").myCout("xixi");//ob.myCout("hehe") == ob
    return 0;
}運行結果:

3、如果成員數(shù)據(jù)和函數(shù)的形參 同名 必須使用this指針
class Data
{
public:
    int a;//4B
public:
    void setA(int a)
    {
        this->a = a;
        return;
    }
    int getA(void)
    {
        return this->a;
    }
};4、this指針完成鏈式操作
class Printf
{
public:
    Printf& myPrint(int value)
    {
        cout<<value<<" ";
        //*this ==外界的對象
        return *this;
    }
};
void test01()
{
    Printf ob;
    ob.myPrint(10).myPrint(20).myPrint(30).myPrint(40);
    cout<<endl;
}
到此這篇關于C++簡明圖解this指針的使用的文章就介紹到這了,更多相關C++ this指針內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

