CStringW で型指定されたローカル変数を定義した関数があります。このオブジェクトを参照ではなく値で呼び出し元に返すのは安全ですか?
2 に答える
2
はい、大丈夫です。CString
内部的に参照カウント付きのバッファを使用し、コピーオンライトを行うためCString
、元のオブジェクトのコピーを作成してから破棄すると、すべてが「正常に機能する」はずです。
于 2010-08-10T02:56:42.790 に答える
1
CString は STL ではなく MFC からのものだと思うので、タグを変更することをお勧めします。
関数からローカル変数を返す場合、値渡しは安全ですが、参照渡しは安全ではありません。値で返すと、文字列が呼び出し元に効果的にコピーされます。参照によって戻ると、関数が戻るときに破棄されるローカル変数への参照が呼び出し元に与えられます。したがって、呼び出し元はそれを使用できず、返された参照は常に無効です。
于 2010-08-10T02:58:30.173 に答える