日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C++成員初始化列表_C 語言

作者:梁唐 ? 更新時間: 2022-03-23 編程語言

文章轉自: 公眾號:Coder梁(ID:Coder_LT)

除了可以使用構造函數Classy::Classy(int n, int m): mem1(n), mem2(0), mem3(n*m+2) {
? ? ...
};類成員進行初始化之外,C++還提供了另外一種初始化的方法,叫做成員初始化列表。

我們假設Classy是一個類,而mem1mem2mem3都是這個類的數據成員,那么類構造函數可以寫成:

Classy::Classy(int n, int m): mem1(n), mem2(0), mem3(n*m+2) {
? ? ...
};

上述代碼將mem1初始化為n,將mem2初始化為了0,mem3初始化成了n*m+2。這些初始化工作是對象創建是完成的,并且在執行花括號中的內容之前。

有這么幾點需要注意:

  • 這種格式只能用于構造函數
  • 必須用這種格式初始化非靜態const數據成員(C++11之前)
  • 必須用這種格式初始化引用數據成員

數據成員被初始化的順序和它們在類中定義的順序相同,和初始化列表中的排列順序無關。

C++11的類內初始化:

C++11當中允許我們直接對成員變量進行賦值:

class Classy {
? ? int mem1 = 10;
? ? const int mem2 = 20;
};

這和在構造函數當中使用成員初始化列表等價:

Classy::Classy() : mem1(0), mem2(20) {...}

我們在類當中直接初始化之后,我們也可以在成員初始化列表當中進行覆蓋:

Classy::Classy(int n) : mem1(n) {...}

在這種情況下,mem1的值會被替換成n。

欄目分類
最近更新