初始化和explicit函式

2021-09-26 22:48:50 字數 537 閱讀 5070

初始化列表

1、狹義初始化

在定義變數的時候直接進行初始化的這種行為叫做狹義初始化:

int a = 3;
2、廣義初始化

第一次給變數賦值就叫做初始化的情況叫廣義初始化

int a;

...//跟a無關的**

a = 3

初始化列表相當於狹義初始化,而建構函式內部相當於廣義初始化

所以初始化列表可以解決一些只能用狹義初始化進行初始化的變數,例如:

const變數

引用沒有無參構造的類的物件

3、explicit:阻止單參構造的不規範呼叫

單引數的建構函式,可以用=直接呼叫,例如:

假設ct類中有乙個單引數的建構函式,引數型別為int或int相關型別,那麼,「ct a = 3;」 這種寫法就是被允許的。

但是這種寫法十分彆扭,看上去好像直接把3賦給了a,為了避免這種寫法,可以在建構函式加explicit,使得這樣的寫法變得無效。

3 2 建構函式詳解,explicit,初始化列表

目錄 3 2 建構函式詳解,explicit,初始化列表 c 類建構函式初始化列表 一 建構函式 在類中有一種特殊的成員函式,它的名字與類名相同,我們在建立類的時候,這個特殊的成員函式就會被系統呼叫。這個成員函式,就叫 建構函式 因為建構函式會被系統自動調動,建構函式的目的就是初始化類物件的資料成員...

建構函式初始化列表和初始化函式

其實並沒有所謂的初始化函式的概念,本文中的初始化函式只是說明在函式體內進行賦值。而初始化列表才是真正意義上的物件初始化。使用初始化列表效率會高一點。c 規定,物件的成員變數的初始化動作發生在進入建構函式本體之前。在建構函式體內只是賦值,並不是初始化。請看下面這個栗子 class base publi...

C 初始化器和建構函式初始化器

初始化器分為物件初始化器和集合初始化器。下面一一介紹。物件初始化器 物件初始化器的作用,簡單點說就是可以使我們初始化乙個類的 變得更簡潔。比如下面這個類 class person public int age public string address 我們要初始化它並對它賦值的話通常要這樣 per...