2013年9月4日水曜日

C++ 参照概論

変数にニックネームをつけてみる?答えは聞いてない...
C++には、新しく参照という機能があります。参照とは、変数に別名(エイリアス)を
つけるための機能です。例えば、Peggyさんに「PeachGirl」というニックネームをつけた
としても、Peggyさん本人は一人だけです。PeachGirlに桃を一つあげれば、それは
Peggyさんに桃を一つあげたことと同じことになります。

因みにPeggyさんは、いつもやっているECC英会話ポッドキャストに登場します^^
http://www.eccweblesson.com/podcast/
毎週短いダイアログが2つあり、それらはわりと身近な単語で構成されているし
バッチリ解説もあるのでとても聴きやすいと思います。無料なのに!
たまに思わずクスリと笑ってしまうやりとりがあるので、電車で聞いている人は
変な人に思われないよう要注意でしょう^^

話を戻して、実際にプログラムの変数で考えてみます。
ここでは、Peggyという名前の変数に、PeachGirlという別名をつけます。
変数Peggyに10を代入すると、それはPeachGirlに10を代入したのと同じことです。
PeachGirlが10人も!冗談です(^_^;)
さらに変数Peggyに1を加えれば、なんと自動的にPeachGirlにも1が加わるのです。

もしC言語を使いこなしている方は、ポインタと同じじゃないか!と思ったかもしれません。
そうです、同じようなことができます。ただ、C言語の場合のポインタと違って*PeachGirlの
ようにアスタリスクを付けてアクセスする必要がなくなるのです。
星が何個付けばいいんだ?まぁ、とりあえずコンパイルしてみるかといった、曖昧さを
含んだ星々の問題に頭を悩ませる事がなくなります。 (^O^;)
さすがC++、便利ですね。

関数にニックネームを渡してみる?いいよね...
この参照という機能、関数を呼び出す時の引数に使うと便利です。実引数と仮引数が
同じ所を参照する形で引数を渡すことを、「参照渡し」といいます。
C言語では参照渡しの時にはポインタを使っていました。
実はこの時、ポインタそのものは「値渡し」の形で関数に渡っているのです。^^
つまりCでは実質、値渡ししか存在しなかったといえます。
参照渡しはポインタを使って擬似的に行われていたのです。
C++では新しく、ポインタを使わないで参照渡しが出来るようになりました。(本格サポート)
星々の問題がなくなることで、プログラムが見やすくなります。
次回以降で、関数への引数の渡し方についてオススメの方法を紹介していきますので
是非参考にしてみてください(^^)


今日の名言
優柔不断は疑いと恐怖心を生み出し、行動は勇気を生み出す。恐怖心を克服するには
家に閉じこもってくよくよしていては駄目だ。外へ出て仕事に精を出す事だ。
                                    デール・カーネギー

自分が恐怖を抱いている事柄を一覧表にして、無意味なものはないか調べてみることだ。
率直な気持ちで調べれば、その大部分が取るにも足りぬ恐怖であることが分かる。
                                    デール・カーネギー

我々は、安楽と贅沢が得られなければ人生の幸福はありえない、と考えているが、
実際に人を真に幸せにするものは、何か我を忘れて取り組める事柄を持つことである。
                                    チャールズ・キングズリー

ひとかどの人間になりたければ、物事に熱中できる人間になることだ。人に好かれる
ようになるし、機械のように毎日同じことの繰り返しばかりする退屈な人生から逃れられる。
どんな分野でも先頭に立てるようになる。そうなるに決まっている、これが人生だから。
仕事に全身全霊を打ち込めば、楽しさがどんどん増していくばかりでなく、人に信用される
ようになる。ちょうど発電機を目撃した人間が電気を信用する気になるように。
                                   ジョナサン・オグデン・アーマー