每个类成员函数都只涉及一个对象, 即调用它的对象。 但有时候方法可能涉及到两个对象, 在这种情况下需要使用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;
}
原文链接: https://www.cnblogs.com/renfanzi/p/9178637.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/275926
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!