簡単な質問です。C++ での *this の動作を理解したい。検索エンジンが * をワイルドカード文字として解釈するため、これが明白すぎる場合や繰り返しである場合は、ご容赦ください。
私は他の人のコードを使用しています。これには、次のような多くの機能があります。
(Nの型は構造体)
N N::someMethod() const {
N n = *this;
// do a function that modifies internal values of the struct
n.modify();
return n;
}
何が起こるかというと、元の構造体の変更されたコピーが返され、元の構造体は変更されていません。
どういうわけか*これはコピーを作成していると思いますが、理由/方法がわかりません。これは構造体に関係する魔法ですか?関数宣言のconstですか?舞台裏で別の魔法が行われているのでしょうか?
私の理解では、「これ」はポインターです。あなたが * ポインターの場合、単にそのポインターを逆参照しただけだと思っていましたか?? (だから私は n がオリジナルと同じメモリのチャンクを指していると思っていましたが、明らかにそうではないので、私の直感は壊れています)
よろしければ、私のやり方の間違いを詳しくご指摘ください。大丈夫です。私は、ボンネットの下で何が起こっているかについての詳細な技術的議論を理解するのに十分賢いです、約束します!