LAB

C++プログラムTIPS

研究室プログラムTIPSC++2010.1.26

C++:参照

今日はC++の参照についてちょこっとだけお話します。
C言語をメインに使ってきた人だと全部ポインタで出来る!
なんて思ってしまいがちですが、
それぞれのメリットとデメリットを知った上でちゃんと使い分けるのが良いですね.
 

参照は関数の引数で使うことが多いです。
こんな感じです。

int function(Param& param);

メリットとしては必ず実体が入ってくるため、
不正アドレス使用によるメモリ破壊を起こさないということです。
なのでポインタと比べ、安全性が高いと言われます。
 
デメリットとしてはポインタの様にNULLを渡すことができないので、
例外的な判定を行うことはできなくなります。

   

もうひとつ変わった使い方になるかもしれませんが、
参照をエイリアス(別名)として使用する方法があります。
 
ゲームでキャラクターを作成しているとき、
メモリを節約するために各行動で共用するフリーのワークを用意することがあります。

class Soldier {
    :
    // それぞれの行動処理内で自由に使用できるワーク
    unsigned int freeWork[FREE_WORK_COUNT];
};

これをエイリアスで置き換えて使用することもできます。

int attack(void)
{
    // 攻撃中にダメージを受けた回数。一定以上超えるとダメージへ
    unsigned int& damageCount = freeWork[0];
    :
}

参照をしているので、damageCount という名前で freeWork[0] を直接操作することができます。
分かりやすい名前に置き換えておけば、別の担当者が見たときに読みやすくなります。
 
ただし、あちこちで書きすぎると逆に分かりにくくなってしまうので要注意です!!
関数の先頭で渡す程度にしておくのが良いと思います。

RECRUIT

大阪・東京共にスタッフを募集しています。
特にキャリア採用のプログラマー・アーティストに興味がある方は下のボタンをクリックしてください

RECRUIT SITE