コンストラクターと Malloc
new 式や delete 式とは異なり、std::malloc はオブジェクトにメモリを割り当てるときにコンストラクターを呼び出しません。したがって、コンストラクターを呼び出しながらオブジェクトを作成するには、別のアプローチが必要です。
考えられる解決策:
1. new の使用:
new はオブジェクトを明示的に作成し、その後そのコンストラクターを呼び出すため、これが主な使用目的です。
例:
<code class="cpp">A* a = new A(); delete a;</code>
2.明示的なコンストラクター呼び出し (Placement New):
このメソッドには、malloc を使用してメモリを割り当て、その後、placement new 構文を使用してコンストラクターを手動で呼び出します。
例:
<code class="cpp">A* a = (A*)malloc(sizeof(A)); new (a) A(); a->~A(); free(a);</code>
new の配置には正しいコンストラクター オーバーロードの使用が必要であり、慎重に使用する必要があることに注意することが重要です。一般に、オブジェクトの作成には new を使用する必要がありますが、new の配置はメモリ管理が手動で処理される特定のシナリオに適しています。
以上がC で「new」を使用せずにオブジェクトを作成し、コンストラクターを呼び出す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。