正在初始化 [以新的 [物件配置
選擇性初始設定式 欄位都會包含在文法中的 新運算子。這可讓新的物件,與使用者定義的建構函式進行初始化。如需有關如何初始化執行作業的詳細資訊,請參閱初始設定式。下列範例說明如何使用已有的初始化運算式新運算子:
// expre_Initializing_Objects_Allocated_with_new.cpp
class Acct
{
public:
// Define default constructor and a constructor that accepts
// an initial balance.
Acct() { balance = 0.0; }
Acct( double init_balance ) { balance = init_balance; }
private:
double balance;
};
int main()
{
Acct *CheckingAcct = new Acct;
Acct *SavingsAcct = new Acct ( 34.98 );
double *HowMuch = new double ( 43.0 );
// ...
}
在這個範例中,物件CheckingAcct配置使用新在指定的運算子,但沒有預設初始化。因此,預設建構函式類別, Acct(),就會呼叫。然後物件SavingsAcct配置同樣地,不同之處在於它會明確地初始化為 34.98。因為是型別 34.98 雙,使用該型別的引數的建構函式呼叫來處理元件的初始化動作。最後,nonclass 型別HowMuch都會初始化為 43.0。
如果物件是類別型別,且該類別的建構函式 (如同在先前的範例),可以藉由初始化物件新才符合其中一個這種情況的運算子:
初始設定式中提供的引數皆是建構函式。
此類別具有預設建構函式 (建構函式可以呼叫沒有指定引數)。
存取控制和模稜兩可的控制項在執行operator new和建構函式,都規定在規則上模稜兩可和初始化使用特殊成員函式。
配置陣列使用時,就可以執行沒有明確的每個元素初始化新操作員。 只有預設建構函式,如果有的話,會呼叫。請參閱預設引數如需詳細資訊。
記憶體配置失敗時 (operator new傳回值為 0),不執行任何初始化。這可以防止嘗試初始化不存在的資料。
就如同函式呼叫未定義的初始化的運算式都會經過評估的順序。此外,您不應該依賴這些記憶體配置執行之前,完全要評估的運算式。記憶體配置失敗時, 新運算子會傳回零、 初始設定式中的某些運算式可能不會完整地評估。