トラックバックの応酬 → [C++]for each(3)
C++で参照型を悪用(?)するとこげなマネできます。
#include <iostream>
class incrementor {
int& target_; // 仮身
public:
incrementor(int& target) : target_(target) {} // 仮身が乗り移る
void increment() { ++target_; } // 仮身を++する
};
int main() {
int n = 0;
incrementor inc(n);
inc.increment(); // これ即ち++n
std::cout << n << std::endl;
}
C++では参照か値かを'&'のある/なしでコントロールできるんで
こんなヤクザなマネができるわけだけども、
C#(つか.Net)ではどうなんです?
class incrementor {
private ref int target_;
public incrementor(ref int target) { target_ = target; }
...
}
とは書けないよねぇ...
static void increment(ref int n) { ++n; }
ってやれるんだからクラスメンバにrefついててもいぃんじゃない?
って思うんだけど、それだとなんかマズいことがあるのかしら...
あたしゃ参照か値かは作る人じゃなくて使う人が決めるもんだと
思ってんだけども、.Netでは作る人が決めちゃうわけで、
なんかこー、しっくりこないっちゅーか。