C 建構函式

2021-08-14 19:27:50 字數 1787 閱讀 2887

需要合成default constructor的情形:

如果乙個 class 沒有任何 constructor ,但它內含乙個 member object ,而後者有 default constructor,那麼這個 class 的隱式 default constructor 就是有用的,編譯器需要為該class合成出乙個 default constructor。

如果class a內含乙個或乙個以上的member class object,那麼class a的每乙個constructor必須呼叫每乙個member classes的default constructor。編譯器會擴張已存在的constructors,在其中安插一些**,使得 user code 被執行之前,先呼叫必要的 default constructors。

c++語言要求以member objects在class中的宣告順序來呼叫各個constructors。

如果乙個沒有任何constructors的class派生自乙個帶有default constructor的base class,那麼這個derived class的default constructor會被視為有用的,需要被合成出來。

如果設計者提供多個constructors,但其中都沒有 default constructor ,那麼編譯器會擴張現有的每乙個 constructor ,將用以呼叫所有必要之default constructors的程式**加進去。

class宣告(繼承)乙個virtual function。

class 派生自乙個繼承鏈,其中有乙個或多個virtual base classes。

如果class 沒有提供乙個顯式的copy constructor,當class object以相同class的另乙個object作為初始值時,內部以default memberwise initialization手法完成。也就是把每乙個內建的或派生的data member的值,從某個object拷貝乙份到另乙個object上。

當 class 不展現出 bitwise copy semantics(位逐次拷貝)時,才會合成出copy constructor。

有4種情況:

1. 當class內含乙個member object,而後者的class宣告有乙個copy constructor。

2. 當class繼承自乙個base class而後者存在乙個copy constructor時。

3. 當class宣告了乙個或多個virtual functions時。

4. 當class派生自乙個繼承串鏈,其中有乙個或多個virtual base classes。

在下列情況下,必須使用member initialization list:

1. 當初始化乙個 reference member 時。

2. 當初始化乙個 const member 時。

3. 當呼叫乙個 base class 的 constructor ,而它擁有一組引數時。

4. 當呼叫乙個member class 的constructor,而它擁有一組引數時。

class word

};

這種方式會先產生乙個臨時性的 string object,然後將它初始化,之後以乙個assignment運算子將臨時性object指定給_name,隨後再摧毀那個臨時性object。

將int型的變數_cnt放在初始化鍊錶中沒有必要,因為它已經是乙個行為良好的member。

list中的專案順序是由class中的members宣告順序決定的,不是由 initialization list決定的。

C 建構函式 拷貝建構函式

建構函式 class base private int m var 建構函式無返回值型別,函式名和型別相同。拷貝建構函式傳遞引數為引用。1 class base2 7 拷貝建構函式 8 base base ref m var ref m var 9 11 private 12 intm var 13...

C 構造器(建構函式)

定義和作用 構造器是在構建類的 引用時 自動執行的方法。所以,每個類都必須至少要有乙個構造器。在訪問乙個類的時候,編譯器最先執行構造器中的 它與類同名,帶引數的構造器能夠獲取引數,但是與方法不同的是 構造器雖然也是一種 例項型別 即必須通過例項來進行呼叫,也可以稱之為引用型別 但是卻不能返回任何值 ...

C 建構函式

建構函式是一種特殊的成員函式,它主要用於為物件分配儲存空間,對資料成員進行初始化.1 建構函式的名字必須與類同名 2 建構函式沒有返回型別,它可以帶引數,也可以不帶引數 3 建構函式的主要作用是完成對類的初始化工作 4 在建立乙個類的新物件 使用new關鍵字 時,系統回自動呼叫給類的建構函式初始化新...