共用方式為


正在初始化 [以新的 [物件配置

選擇性初始設定式 欄位都會包含在文法中的 運算子。 這可讓新的物件,與使用者定義的建構函式進行初始化。 如需有關如何初始化執行作業的詳細資訊,請參閱初始設定式。 下列範例說明如何使用已有的初始化運算式運算子:

// 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),不執行任何初始化。 這可以防止嘗試初始化不存在的資料。

就如同函式呼叫未定義的初始化的運算式都會經過評估的順序。 此外,您不應該依賴這些記憶體配置執行之前,完全要評估的運算式。 記憶體配置失敗時, 運算子會傳回零、 初始設定式中的某些運算式可能不會完整地評估。

請參閱

參考

新運算子 (C++)