19/12/07 11:57:37.74 4p8EX4B8.net
これのこと、毎回調べ直さないと作れない
プロキシ
実は、C++ でも、かなり無理やりですが、(見た目だけは)プロパティのようなことができたりします。 とりあえず、百聞は一見にしかずということで、以下の例を見てください。
利用側、すなわち、main の中では、 まるで普通の変数に対する代入・参照であるかのようなコードになっています。
このからくりは、 age の読み書きに、AgeProxy という名前の別のクラスを介することで実現します。 Age は AgeProxy 型の変数です。
AgeProxy の代入演算子(operator =)と int 型へのキャスト(operator int)を通して、 Person クラスの age 変数の読み書きをします。
ちなみに、こういう例のように、いったん別のクラスを通して値を読み書きしたりする方法を、 プロキシ(proxy: 代理)と呼びます。
まあ、このパターンは、利用側の見た目は綺麗になりますが、 実装は面倒ですし、実行効率もあまりよいとはいえません。
さらに言うと、プロパティを virtual 化しようとすると、 この例よりもさらに複雑な実装が必要になります。
こういう感じの話を振り返った上で、 改めて C# の「プロパティ」機能を見ると、 便利な機能だなぁとつくづく思います。
URLリンク(ufcpp.net)