0
class Test
{
public:
    typedef std::map<double, double> MapType;

private:
    MapType myMap;
 public:
    ...
    const MapType& getMap() const  // is this normal????
    {
        return myMap;
    }
};

クラス Test の外で Map を使用したいのですが、参照を返すことはできますか?それとも悪いケースがありますか?

4

3 に答える 3

1

ほとんどの場合、まったく問題ありません (ただし、型が大きくない場合は、値による戻りが推奨されます)。オブジェクトが破棄される悪いケースが 1 つだけあります。マップ上の参照がぶら下がっています。

この場合の例:

const Test::MapType& getNewMap()
{
   return Test().getMap();
}

// somewhere in code

const Test::MapType& map = getNewMap();
于 2013-09-25T10:43:28.920 に答える
1

私の目には、これで問題ありません。

ユーザーが戻り値を値でキャッチした場合、とにかくコピーを取得します。参照によってキャッチされた場合、参照がそれを返したオブジェクトよりも長く存続することは想定されていないことは明らかです。

于 2013-09-25T10:44:21.677 に答える