新的運作方式
配置運算式 — 包含運算式 新運算子,可以執行三個操作:
找出並保留儲存區或多個要配置的物件。 這個階段完成時,正確的儲存量的配置,但是還不物件。
初始化的物件。 一旦完成初始化,足夠的資訊是存在的物件配置的儲存體。
傳回的指標,指標型別的物件衍生自新的型別名稱 或 型別名稱。 程式會使用 this 指標來存取新配置的物件。
新運算子叫用的函式operator new。 任何型別的陣列,以及物件的類別, struct,或等位型別、 全域函式, :: 運算子 new,稱為 「 配置存放區。 類別型別物件可以定義自己operator new以每個類別為基礎的靜態成員函式。
當編譯器遇到新配置的物件型別的運算子type,就會發出呼叫type**:: new 運算子 (sizeof (type))** 或,如果使用者定義的無operator new定義時, :: new 運算子 (sizeof (type))。 因此, 新運算子可以配置給物件的正確的記憶體數量。
![]() |
---|
引數為operator new屬於型別 size_t。這種類型被定義在行銷。H,MALLOC。H,記憶體。H,搜尋。H,STDDEF。H,STDIO。H,STDLIB。H,字串。H 和時間。H. |
文法中的選項可讓規格的位置 (請參閱的文法 new 運算子)。 位置參數只能用於使用者定義的實作operator new。 它允許額外的資訊傳遞至operator new。 已有的運算式位置欄位,例如T *TObject = new ( 0x0040 ) T;會轉譯為T *TObject = T::operator new( sizeof( T ), 0x0040 );有類別 t 成員運算子新,否則以T *TObject = ::operator new( sizeof( T ), 0x0040 );。
原本位置欄位,就是允許使用者指定的位址配置的硬體相關物件。
![]() |
---|
雖然前面的範例顯示只有一個引數,在位置欄位,沒有任何限制在幾個多餘的引數可以傳遞至operator new這種方式。 |
即使operator new巳經定義了類別型別的全域運算子可供使用這個範例的形式:
T *TObject =::new TObject;
範圍解析運算子 (::) 會強制使用的全域新運算子。