-1

プライベートと宣言された配列を返す getter メソッドがあります。

.h:

    private:
    CStringArray a;

の 。cpp:

    CStringArray &Define::GetDefined()
    {
       return a;
    }

別の .cpp では:

    int size = (define.GetDefined()).GetCount();

これは int の正しい値を返します。しかし、これは参照による割り当ての正しい例ですか?

4

2 に答える 2

2

はい。ただし、最終的な.cppファイルの余分な中括弧は不要であり、読者には役に立たないため、おそらく気にする必要はありません。

例えば。

int size = define.GetDefined().GetCount(); 

また、参照によって返されるオブジェクトが、無効になりそうなスタックの一部に割り当てられていないことをユーザーが確認する必要があることにも言及する必要があります。

例えば:

A& method() {
   return A();
}

または、その問題で無効になりそうなメモリの一部:

class A{
  B member;
  B& get_b_ref() {
    return member;
  }
}

int main() {
  A* a_ptr = new A();
  B& b_ref = a_ptr->get_b_ref();
  delete a_ptr;
  b_ref.any_method(); // yikes
}
于 2012-08-20T14:53:00.817 に答える
1

はい、ゲッターから参照を返すことは絶対に正しいです。

このオブジェクトを外部から変更しない場合は、const Array&を返すこともできます。

于 2012-08-20T14:52:19.743 に答える