株式会社エス・スリー・フォー

2.6 情報の流れ

Rogue Wave のライブラリでは、情報は一般に引数を経て関数へ入り、戻り値を通って出ます。ほとんどの関数は、その引数を変更しません。また、引数が値で渡されるか定数参照の場合、引数は絶対に変更されません。

void  foo(const RWCString& a)

ただし、引数が非定数参照として渡される場合、関数はそれを変更する可能性があります。

引数がポインタとして渡される場合、ほとんどの関数はそのポインタのコピーを保持します。以下は、典型的なコレクションクラスの例です。

RWOrdered::insert(RWCollectable*);

この関数はポインタのコピーを保持して、関数が戻った後に、コレクションがオブジェクトへのポインタを保持しています。[1]

注釈

  1. ^ 別の設計方法として、「NIHクラス」のように、参照によってコレクションに挿入されているオブジェクトを渡すこともできます。しかし、この方法は、値渡しのように、参照の保持をプログラマが忘れる可能性が非常に高くなること、そしてスタック上の変数への参照を保持することが簡単になりすぎることの 2 つの理由で採用しませんでした。