每個類成員函數都只涉及一個對象, 即調用它的對象。 但有時候方法可能涉及到兩個對象, 在這種情況下需要使用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; }