インスタンス化の違い: 新しいものと新しいもの以外
この質問では、new 演算子を使用してオブジェクトをインスタンス化する場合と、それをインスタンス化する場合の機能的な違いについて説明します。新しいものなし。
新しいものではないインスタンス化
Time t(12, 0, 0); // t is a Time object
このインスタンス化では、(ほとんどの実装で) スタック上に常駐する t という名前の Time オブジェクトが作成されます。現在のスコープ内でその存在を保持します。
new Instantiation
Time *t = new Time(12, 0, 0); // t is a pointer to a dynamically allocated Time object
このインスタンス化は、演算子 new() を使用して動的にメモリを割り当て、コンストラクター Time( )。 tには、割り当てられたメモリブロックのアドレスが格納されます。 Time オブジェクトは (通常は) ヒープ上に存在します。プログラムの後半で、割り当てられたメモリを解放し、メモリ リークを防ぐために t を削除する必要があります。
機能の違い
メモリ管理における明らかな違い以外に、次のような違いはありません。 2 つのインスタンス化には機能的な大きな違いがあります。どちらのメソッドも、指定されたパラメーターを使用して Time クラスのインスタンスを作成します。
注意
「スタック」と「ヒープ」という用語は、通常、次のストレージの場所を示すために使用されます。それぞれスタック割り当てオブジェクトとヒープ割り当てオブジェクト。ただし、C 標準では、メモリの場所に基づいてこれらの区別を課していません。代わりに、ストレージ期間に基づいてオブジェクトを分類します。これは、スタックとヒープの従来の概念と一致する場合もあれば、一致しない場合もあります。
以上がC における新規インスタンス化と非新規インスタンス化: 主な違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。