私はいくつか質問があり、私は助けてくれるでしょう。C++ - オブジェクトと新しいメモリの割り当て、何が起こっているのかの説明
プリミティブ型の関数のみのパターンを作成できますか?
setters \ gettersは、プログラマが明示的に定義していない場合、二重に設定されますか?
class CreateDestroy {
public:
CreateDestroy() { cout << "create "; }
~CreateDestroy() { cout << "destroy "; }
};
int main() {
CreateDestroy* c1;
for (int i = 1; i <= 2; i++)
CreateDestroy c2;
return 0;
}
メインでCreateDestroy * c1を作成すると、print createですか?プログラムの終わりにプリントが破壊されますか?
create create destroy create destroy
と私は(*
なし)メインでCreateDestroy c1;
を持っている場合は、印刷を変更していますか? または私が持っている場合CreateDestroy* c1 = new CreateDestroy;
プリントを変更しますか?
私はdelete c1を呼び出します。主に:
int main() {
CreateDestroy* c1 = new CreateDestroy;
for (int i = 1; i <= 2; i++)
CreateDestroy c2;
delete c1; // !
return 0;
}
私は削除を呼び出すと印刷されますか? これは、私が印刷をしなかったことを削除するよう呼びかけなかったことを意味しますか?
私はより良い
感謝のそれを理解するために、説明させていただきます。
'プリミティブ型に対してのみ関数のパターンを作成できますか? 'この文はわかりません。私はパターンの別の理解を持っていると思います –
質問ごとに1つ質問してください。把握すべきことがたくさんあるようですので、あなたの質問を例文とあなたが提供できる追加情報でサポートしてください。 –
出力シーケンス "create create destroy create destroy"は元のコードとは関係ありません。 'CreateDestroy * c1'をポインタとして使用すると、ここでは何もインスタンス化されず、' c2'のために 'create destroy create destroy'を取得する必要があります。 'c1'がポインタ' CreateDestroy c1'でない場合、 'create create destroy create destroy destroy'を取得する必要があります。 'new/delete'と' c1'をポインタとしてインスタンス化すると、後者の出力シーケンスにもつながります。 – cwschmidt