|
どうもオイラとぷら氏の間で認識違いがあるようだ。
ぷら氏がいう「共用」「共有」がどういうことなのかオイラにはわかっていないので話が通じん。
int main(int argc, char* argv[]) {
myfunc();
}
のようなコードがあるとして myfunc() の中で argc や argv を使いたい=共有したい、のであるならば
( myfunc() に引数で引き渡されていないという現状において)
それはバグの元だからできない。できないように言語仕様自体が設計されているわけで、できてはならない。
struct mycomplex {
double re;
double im;
double arg() { return atan2(re, im); }
double square() { return re*re+ im*im; }
double abs() { return sqrt(square()); }
};
であれば mycomplex のインスタンスが生きている限りにおいて arg() と square() が同じ値 re im を
使うことが出来る、それはある意味「共有している」と言えるだろう。実のところ共有なんかしてないけど。
提示リンクは関数内関数の例だけど、今なら lambda のほうがはっきりくっきり楽。
|