operator ->()
systemCの記述の中にportの宣言とかで operator ->()がオーバーライドされているところがある。thisを返すようにしてあって、ポインタじゃなくてもポインタ表記できるようになってる。
#実際port類はそう書くことになってるみたい
試し。
#include <iostream> #include <string> using namespace std; struct A { string a,b,c; A(string a = "foo",string b = "bar",string c = "friday") : a(a), b(b), c(c) {} A* operator ->() { return this; } }; main() { A a; cout << a->a << endl << a->b << endl << a->c << endl; }
しかし、なんでそうしてるのかがサッパリ。
なんだろう? ハード設計者にはポインタと実体の区別がつかない人が多い、と思われてるんだろうか・・・?