首頁 >後端開發 >C++ >成員初始化列表與建構函數分配:什麼時候應該使用哪一個?

成員初始化列表與建構函數分配:什麼時候應該使用哪一個?

DDD
DDD原創
2024-12-23 02:32:37547瀏覽

Member Initializer List vs. Constructor Assignments: When Should You Use Which?

初始化清單與建構子賦值:內部差異

初始化類別成員時,可以選擇使用成員初始值設定項清單或指派值在建構函數體內。在內部,這些方法有細微的差別。

成員初始值設定項列表

使用成員初始值設定項列表,如本例所示:

MyClass::MyClass(): _capacity(15), _data(NULL), _len(0)
{
}

在進入建構函式體之前直接初始化成員變數。這對於以下情況特別有用:

  • 初始化常數成員:這些成員必須在執行構造函數主體之前初始化,而成員初始值設定項清單是執行此操作的唯一方法。
  • 初始化引用:引用必須在建構函式主體之前初始化,且成員初始值設定項清單是首選方法。
  • 將參數傳遞給基底類別建構子:使用參數化建構子從基底類別繼承時,必須使用成員初始值設定項列表來初始化基底類別成員。

建構子分配

另一方面,在建構子體內賦值,如下例所示:

MyClass::MyClass()
{
  _capacity=15;
  _data=NULL;
  _len=0
}

在構造函數體內賦值,如下例所示:

在構造函數體內賦值,如下例所示:

在構造函數體內賦值,如下例所示:

在構造函數中賦值函數執行期間執行初始化。這種方法通常用於非常量成員和可以根據建構函數的參數初始化的成員。 產生程式碼的比較通常,兩種方法都會產生類似的結果程式碼。但是,對於常數成員或引用,只有成員初始值設定項清單可以初始化它們,因為建構子賦值會導致編譯錯誤。

以上是成員初始化列表與建構函數分配:什麼時候應該使用哪一個?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn