今回はC++で使えるようになった参照という機能の紹介です。^^
この機能を使えば、変数に別名(エイリアス)をつけることができます。
例えば、参照を使って変数numberに別名newnumをつけるとこのようになります。
int number;
int &newnum = num; //もととなる変数と同じ型で宣言してください
//&newnum で参照の宣言です^^
このように別名をつけると、元々の変数名でも別名でも同じようにアクセスできます。
どちらかの値を変更すると、もう一方も変更されます。
#include <iostream>
using namespace std;
int main(void)
{
int number = 0;
int &newnum = number;
newnum = 10;
cout << "number = " << number << endl;
cout << "newnum = " << newnum << endl; //アクセス方法に注目です。
//&が要りません。
return 0;
}
実行結果
# ./test
number = 10
newnum = 10
number, newnumのどちらも同じ10になっています。
同じことをCで実現すると、ポインタを使います。しかし、ポインタの場合は
その指示す先のデータにアクセスするときは*(アスタリスク)をつけなければ
なりません。
プログラム例
int number;
int *newnum = &number; //ポンタの宣言と代入
*newnum = 100; //*を付けてアクセス、星々の問題が!?
参照のほうがシンプルですね。(^^)
このように、わずか1文字でも入力は少なくするのがポイントです。
もう少しだけ参照で遊んだサンプルプログラム
#include <iostream>
using namespace std;
int main(void)
{
int number = 0;
int &newnum = number; //参照の宣言
newnum = 10; //まずnewnumに10を代入
cout << "number = " << number << endl;
cout << "newnum = " << newnum << endl;
number = 100; //今度はnumberに100を代入
cout << "number = " << number << endl;
cout << "newnum = " << newnum << endl;
newnum = 1000; //最後はまたnewnumに
cout << "number = " << number << endl;
cout << "newnum = " << newnum << endl;
return 0;
}
実行結果
# ./test2
number = 10
newnum = 10
number = 100
newnum = 100
number = 1000
newnum = 1000
newnumはnumberの別名なので、どちらの値を変更しても
もう一方が同じ値になっています(^^)
今日の名言
信念を持たない限り、人に信念を与えることはできない。自分で納得いかない限り、
人を納得されることはできない。
マシュー・アーノルド
人生もフットボールも原則は同じだ。ラインに向かって突っ込め、ファウルするな。
ボールから身をかわすな。ラインに向かって突っ込め。
セオドア・ルーズヴェルト
失敗は成功の母である。落胆と失敗は、人を確実に成功に向かわせる二つの
試金石である。この二つを自発的に研究し、何か今後に役立てられることを
掴み取ることができれば、これほどプラスになるものはない。過去を振り返ってみよう。
失敗が成功の助けになった場合があるはずだ。
デール・カーネギー
天才は力の集結である。手に入れる価値が有るものなら何でも手当たり次第に
手に入れる人間は、猫を追うブルドッグのように、全身の筋肉を緊張させて、
ただひたすらに自分の目標に向かって進む。
W・C・ホルマン