プログラムTIPS

DEMO PROGRAM ヘキサドライブでは様々な研究開発をしています。その一部を紹介。

C++:参照(2010年1月26日)

今日は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] を直接操作することができます。
分かりやすい名前に置き換えておけば、別の担当者が見たときに読みやすくなります。
 
ただし、あちこちで書きすぎると逆に分かりにくくなってしまうので要注意です!!
関数の先頭で渡す程度にしておくのが良いと思います。

【免責事項】

本サイトが提供している情報に関しては、安全性等、いかなる保証もされません。 株式会社ヘキサドライブは、これらの情報をあなたが利用することによって生ずるいかなる損害に対しても一切責任を負いません。

【著作権】

本サイトが提供しているコンテンツについては、特に断りのある場合を除き、株式会社ヘキサドライブが著作権を有します。