ホームページ > バックエンド開発 > C++ > C の「new」演算子と「operator new」の違いは何ですか?

C の「new」演算子と「operator new」の違いは何ですか?

Patricia Arquette
リリース: 2024-12-16 05:59:09
オリジナル
215 人が閲覧しました

What's the Difference Between the C   `new` Operator and `operator new`?

新しい演算子と新しい演算子: 違いを分かりやすく理解する

「新しい演算子」と「新しい演算子」の区別は混乱を招く可能性があります。区別を明確にするために、詳細な説明を次に示します。

Operator New: Raw メモリ アロケータ

Operator new は、ヒープから初期化されていないメモリを割り当てる標準 C 関数です。これは malloc() 関数と同様に動作しますが、C に固有です。

演算子 new を直接呼び出して生メモリを予約できます。

char *x = static_cast<char *>(operator new(100));
ログイン後にコピー

演算子 new のオーバーロードが可能であり、次のことが可能です。特定のクラスまたはグローバルのメモリ割り当てをカスタマイズします。

新しいオペレータ: オブジェクトの作成と初期化

「new 演算子」は、C でオブジェクトを作成するために使用される主なメソッドです。これは、演算子 new とクラス コンストラクターの機能を組み合わせたものです。

new 演算子を使用する場合:

my_class *x = new my_class(0);
ログイン後にコピー

まず、演算子 new を呼び出して、オブジェクト my_class に生のメモリを割り当てます。その後、コンストラクター my_class(0) を呼び出して、そのメモリ内のオブジェクトを初期化します。 my_class に埋め込みクラス オブジェクトまたは基本クラス オブジェクトが含まれている場合、それらのコンストラクターも呼び出されます。

主な違い

「new 演算子」と「演算子 new」の基本的な違いは、その動作にあります。

  • 演算子 new: 何もせずに生のメモリを割り当てます。初期化。
  • "新しい演算子": 演算子 new によるメモリ割り当てと、コンストラクターによるオブジェクト構築を組み合わせます。

要約すると、演算子 new は下位レベルです。生のメモリを割り当てるための関数ですが、「new 演算子」はメモリの割り当てとオブジェクトの初期化をシームレスに処理する高レベルの抽象化です。

以上がC の「new」演算子と「operator new」の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート