「新運算子」和「新運算子」之間的差異可能會令人困惑。這裡有一個深入的解釋來澄清差異。
Operator new 是一個標準 C 函數,它從堆中分配未初始化的記憶體。它的操作與 malloc() 函數類似,但特定於 C 。
您可以直接呼叫operator new 保留原始記憶體:
char *x = static_cast<char *>(operator new(100));
可以重載operator new,讓您為特定類別或全域自訂記憶體指派。
「新運算子」是用於在 C 中建立物件的主要方法。它結合了operator new和類別建構子的功能。
當你使用new運算子時:
my_class *x = new my_class(0);
它先呼叫operator new為物件my_class分配原始記憶體。隨後,它會呼叫建構函式 my_class(0) 來初始化該記憶體中的物件。如果 my_class 包含嵌入或基底類別對象,也會呼叫它們的建構子。
「new 運算子」和「operator new」之間的根本區別在於它們的行為:
綜上所述,operator new 是一個較低層級的用於分配原始記憶體的函數,而「new 運算子」則是更高層級的抽象,可以無縫處理記憶體分配和物件初始化。
以上是C `new` 運算子和 `operator new` 有什麼區別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!