每个类成员函数都只涉及一个对象, 即调用它的对象。 但有时候方法可能涉及到两个对象, 在这种情况下需要使用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; }