Vladimir Simakov: これは、コンパイラが協調して最適化する場合です。そうでない場合は、f()を呼び出すと、次のようになります。スタックノードポインタは構造体のサイズにシフトされる(ここで結果が返されることになる)。関数コードはスタックに上がります。さらに、実行の過程で構造の宣言に 行き着く。スタックポインタは再びそのサイズにシフトする。この構造にこそ、機能が詰まっているのです。関数が終了する前に、関数内の構造体に割り当てられたメモリは、戻り値に割り当てられたメモリにコピーされます。
構造体が1つのフィールドを持つなら、それでいいのです。それ以上あっても意味がなく、バカバカしいとさえ思います。
単田舎の構造を誰が望むのか?この "仕組み "は、どのように役立っているのでしょうか?
単田舎の構造を誰が望むのか?この「構造化」はどのように役立っているのでしょうか?
配列構造体
MQLはポインターを扱えないが、制約のない構造体は扱えるので、配列を構造体で包む必要がある
配列構造体
MQLはポインターを扱えないが、構造体は制限なく扱えるので、配列を構造体にラップする必要がある
クラスで包む方が簡単なのでは?それでも、この構造は、まず、静的なデータリストを扱う場合に有利である。また、動的な構造を扱う場合、後から着地させるのは不便です。
授業で包んだ方が楽なのでは?構造体は、主に静的なデータのリストを扱うときに有利です。また、動的な構造を扱うと、着地が不便になります。
ではもっと簡単です。
そして、型の掛け算を避けるために、これらの型をクラスの外で部分的に使って、構造体のパブリック部分を記述するクラスを作りました。
通常の構造体として使用することができます。
単田舎の構造を誰が望むのか?この "仕組み "は、どのように役立っているのでしょうか?
あれは...なんだっけ...修辞学的論文)
しかし、時には1つの配列を構造体に入れ、これらの構造体から配列を使用するのが便利な場合があります。
問題なく動作しています。ただ、ひとつだけあります。関数から構造体が返されるとき,それは関数内部で生成された構造体ではなく,この構造体のコピー,つまり暗黙のコピーコンストラクタが起動されています.
不必要なコピーは行わず、スタックに構造体を作成し、そこから必要なフィールドをコピーしています。
これは、コンパイラが協調して最適化する場合です。そうでない場合は、f()を呼び出すと、次のようになります。スタックノードポインタは構造体のサイズにシフトされる(ここで結果が返されることになる)。関数コードはスタックに上がります。さらに、実行の過程で構造の宣言に 行き着く。スタックポインタは再びそのサイズにシフトする。この構造にこそ、機能が詰まっているのです。関数が終了する前に、関数内の構造体に割り当てられたメモリは、戻り値に割り当てられたメモリにコピーされます。