this 指针 · 指向「正在调用它」的那个对象
成员函数只有一份,被所有对象共享;隐藏参数 this 决定 this->x 改的是谁的数据
两个对象 · 各有各的数据
a
Counter 对象 ① @0x…a10
x =
0
b
Counter 对象 ② @0x…b88
x =
0
成员函数 · 全类只有一份
void Counter::add()
{
this
->x =
this
->x + 1;
}
隐藏参数:(Counter *this)
this =
&a
→ 指向对象 a
a.add();
谁在点号左边,编译器就把它的地址当作 this 传进去
同一个 add(),this 指向不同实例 → 各改各的 x,互不干扰
▶ 重播