thisポインタ

thisポインタは、メンバ関数の中で、そのメンバ関数参照元のオブジェクト自身を指すポインタ・・・。

  p->func(); // funcの参照元のオブジェクトはp.

上記の例で言えば、func()の中でのthisとはpのことを指している・・・。

クラス外の関数(フレンド関数や、フレンドでない普通のクラス外関数)に参照元オブジェクト自身を指すポインタを渡して、中でメンバ関数呼ぶなんてことが結構あったりして、そういう時に使う・・・。
(たとえばスレッド処理とか・・・。)

今回は、メンバ関数内でフレンド関数を呼ぶ場合、メンバ関数内でフレンドでない普通のクラス外関数を呼ぶ場合、の2パターンでthisポインタを使って参照元オブジェクトを渡してみる・・・。

フレンド関数

通常のクラス外関数

でこの2つの関数はprofが渡されないと出力できない・・・。
profを渡すメンバ関数は、フレンド関数用が、

通常が、

どちらも、"this"と指定するだけで参照元のオブジェクトを渡している・・・。
でその参照元とは、

このprofが、

2つのメンバ関数を呼んで、その中でクラス外関数にthisで自分自身を渡して、さらにその中でメンバにアクセスして出力していると・・・。

実行すると、

$ ./this_pointer
name: Taro
age: 20
address: Tokyo
friend prof->name_ = Taro
friend prof->age_ = 20
friend prof->address_ = Tokyo
normal get_name() = Taro
normal get_age() = 20
normal get_address() = Tokyo
$

でこれもどんな時に使うのってのはその時(スレッドとかね・・・。)にまた説明すると思う・・・。

Sample/this_pointer.cpp at master · bg1bgst333/Sample · GitHub