1

授業について簡単な質問があります。

次のオブジェクト Apple (デフォルトのコンストラクターが削除されています) を考えてみましょう。

class Apple
{
private:
    bool _fruit;
public:
    Apple(bool fruit) : _fruit(fruit) { }
};

スタック/ヒープで宣言します。

Apple p(true);
Apple * o = new Apple(true);

わかりました、2 つ目はポインターのように見えるので、直接宣言する必要はありません。

Apple * o;を実行できます。後でo = new Apple(true);として構築します。

しかし、スタック上ではどうでしょうか? Apple p を宣言します。コンパイルエラーが発生します。

定義で直接 p を作成しなくても、後で p を作成するにはどうすればよいですか? とても有難い。

4

2 に答える 2

1

スタック上でオブジェクトを宣言することの要点は自動初期化と破棄であるため、それを行うことはできません。また、試してはいけません。

遅延初期化を実装する方法を探している場合は、間違った方向を探しています。

于 2013-08-03T11:19:38.347 に答える