は、私はこのような構造を定義すると言う:これは戻り値の参照の有効な使用ですか?
struct point {
int x;
int y;
}
const point & clone(point& pt) {
point * new_pt;
* new_pt = pt; // copy info, new is called?
return *new_pt;
}
私の理解では、暗黙のうちにnew
を呼び出して、コピーされた構造のためにヒープ上に必要なストレージを割り当て、そのnew_pt
は一時的な変数を指していない、と私は返すことができます*new_pt = pt
ですそれへの参照は、そうですか?
* "私の理解は' * new_pt = pt'は暗黙的にnewを呼び出し、コピーされた構造のヒープ上に必要な記憶域を割り当てます。*あなたはその考えをどこで得ましたか?試行錯誤してC++を習得しようとするのをやめてください。代わりに良い本から系統的に学ぶ。 –
*「私の理解は* new_pt = ptは暗黙のうちに新しいものを呼び出し、コピーされた構造のヒープ上に必要な記憶域を割り当てます」*好奇心の理由から、あなたの理解はなぜですか?それは間違いなく起こりません。この古典をチェックしてください:http://cslibrary.stanford.edu/104/ C++バージョンを見てください。 –
私はなぜ質問と例の敵対的な態度を理解していない。この例は、「C++ Primer Plus」第6版2011ページ400から取られました。変数の正確な命名は、自己完結型に変更されました。ブックからの逐語的な言葉は "クローン()への呼び出しは' new'への呼び出しを隠蔽します... "...したがって、' unique_ptr'を使うより良いアプローチです。しかし、それは問題のポイントではありません。私はそこに「新」と言われました。したがって、疑問です。 – python152