私はC++を学んでいます。私はC、C#、ObjCのバックグラウンドを持っています。かなり高級言語。
C#またはObjCでは、関数またはメソッドの結果としてヒープに割り当てられたオブジェクトを返すのは簡単です。オブジェクトのクリーンアップは(慣例により)管理されているためです。適切なタイミングで破壊されます。
しかし、C++でこれをどのように処理すればよいかわかりません。
例えば、
std::string* makeString()
{
std::string* str = GetSomeStringFromArbitrarySource ();
SaveSomewhereElseInternally (str);
return str;
}
void useString ()
{
std::string* str = makeString ();
// Where and how should I cleanup the `str` object?
// It is not safe `delete str` here because it may be used on another place.
}
多くの関数に渡されるときにヒープに割り当てられたオブジェクトをクリーンアップするための推奨される従来の方法は何ですか?
私はいくつかのスマートポインターを見ましたが、それらは実際には複雑さや気になることを減らすようには見えません。スマートポインタを誤解していますか?