C++ 面向對象 類成員函數this指針


每個類成員函數都只涉及一個對象, 即調用它的對象。 但有時候方法可能涉及到兩個對象, 在這種情況下需要使用C++ 的 this 指針

 

假設將方法命名為topval(), 則函數調用stock1.topval()將訪問stock1的對象數據;stock2.topval()將訪問stock2的對象數據;

 

如果希望該方法的兩個對象進行對比, 則必須將第二個對象作為參數傳遞給它。這時候涉及到隱式和顯式:

 

top = stock1.topval(stock2);

 

隱式的訪問了stock1, 顯示的訪問了stock2, this 則代表的是 stock1, *this 則是對象指針

 

// 輕松使用c++

// 5. 面向對象 this指針, 面向對象的對象指針 完成
#include <iostream>
#include <string>

using namespace std;

class Over {
private:


public:
    int h = 2;
};


class Stock {
private:
    /* data */
    int h;
public:
    Stock(int abc);

    ~Stock();

    int abc();

    Stock &topval(Stock &s);

    Stock &topval1(Over &s);
};

Stock::Stock(int abc) {
    h = abc;
    printf("%d\n", h);
}

Stock::~Stock() {
}

int Stock::abc() {
    this->h = 10;
    printf("%d\n", this->h);
    printf("%d\n", h);
    return 0;
}

Stock &Stock::topval(Stock &s) {
    printf("this-h: %d, s2.h: %d\n", this->h, s.h);
}

Stock &Stock::topval1(Over &s) {
    printf("this-h: %d, s2.h: %d\n", this->h, s.h);
}


int main(int argc, char const *argv[]) {
    Stock s1(123);
    s1.abc();

    Stock s2(222);
    s1.topval(s2);

    Over s3;
    s1.topval1(s3);

    return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM