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