[解決済み] new operator」と「operator new」の違い?
2022-06-06 22:55:45
質問
new operatorとquot operator newの違いはなんですか?
どのように解決するのですか?
私は通常、この2つをもう少しうまく区別するために別の言い方をしようとしますが、いずれにせよ良い質問ですね。
演算子 new は生のメモリを割り当てる関数です -- 少なくとも概念的には、これは
malloc()
. 自分のコンテナのようなものを書いているのでなければ、かなり珍しいことですが、次のように直接 operator new を呼び出すことができます。
char *x = static_cast<char *>(operator new(100));
また、グローバルに、あるいは特定のクラスに対して、operator new をオーバーロードすることも可能です。IRCでは、そのシグネチャは
void *operator new(size_t);
もちろん、(グローバルまたはクラス用の)new 演算子をオーバーロードする場合、対応する delete 演算子もオーバーロードしたい/する必要があります。価値あることとして、配列のメモリを割り当てるために使用される別の演算子 new[] もありますが、その混乱全体を完全に無視する方が良いのはほぼ確実です。
new 演算子は通常、フリーストアからオブジェクトを作成するために使用するものです。
my_class *x = new my_class(0);
両者の違いは、オペレータの新しい だけ が生のメモリを割り当てただけで、他には何もしていないことです。new 演算子はメモリを確保するために new 演算子を使用することから始まりますが、次に適切なタイプのオブジェクトのコンストラクタを呼び出すため、結果としてそのメモリに実際のオブジェクトが作成されることになります。そのオブジェクトが他のオブジェクトを含んでいる場合(組み込みまたはベースクラスとして)、それらのコンストラクタも同様に呼び出されます。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 unsigned int vs. size_t
-
[解決済み] error: 'ostream' does not name a type.
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み】文字列関数で'char const*'のインスタンスを投げた後に呼び出されるterminate [閉店].
-
[解決済み】C++の変数はイニシャライザーを持っているが、不完全な型?
-
[解決済み】浮動小数点数の乱数生成
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み] 警告:暗黙の定数変換でのオーバーフロー
-
[解決済み] スタックアロケーションにより初期化されていない値が作成された
-
[解決済み】エラー。引数リストに一致するコンストラクタのインスタンスがない