3

MFC プロジェクトで使用するために、XML Lite ライブラリの小さなラッパーを作成しました。このコードを使用できますか?

CString GetValue()
{
    const WCHAR* pwszValue = NULL;
    UINT cwchValue = 0;

    m_pReader->GetValue(&pwszValue, &cwchValue);

    return CString(pwszValue);
}

または、GetValue メソッド シグネチャで CString& パラメータを使用する必要がありますか?

4

3 に答える 3

3

パラメータを介して戻る必要はありません。これは機能するはずです。

効率が気になる方はご遠慮ください。この場合、戻り値の最適化が行われる可能性が高くなります。

于 2012-07-29T19:50:14.763 に答える
1

効率を考えている場合は、最適化と測定をオンにします。そして、違いがあるとすれば、それがあなたにとって重要かどうかを検討してください。ここで、コンパイラが戻り値の最適化 (RVO) を行うことはほぼ確実です。

ただし、原則として、より明確なコードを提供するコーディング手法を使用してください。つまり、この場合は、より簡潔で堅牢で読みやすい呼び出しコードを提供する関数の結果を使用してください。

とは言っても、のメモリ リークがpwszValue発生しているように見えます。また、ハンガリー語表記のプレフィックスは正確に読み取れず、明確さが低下するため、賢明なことを行って関数の結果値を使用する場合でも、コードを少し手直しする必要があります。

于 2012-07-29T19:53:09.570 に答える
0

CString&一時的なものへの参照を返すと、プログラムはすぐにクラッシュします。

于 2012-07-29T19:51:21.807 に答える