類中的多種建構函式

2021-09-28 07:10:26 字數 1611 閱讀 3312

建構函式術語:

1. 預設構造 : 指的是沒有形參的建構函式, 由編譯器預設提供, 在某些場合編譯器需要自動呼叫乙個類物件的建構函式時, 只能呼叫預設構造.例如: 子類繼承了父類,當子類物件被構造的時候, 父類                     的構造也會被自動呼叫,此時就只能自動呼叫父類的預設構造

2.預設建構函式:沒有形參,方法體也是空的,目的是構造乙個物件

myclass.**件

class myclass;

myclass.cpp檔案

#include "myclass.h"

myclass::myclass()

2. 轉換構造 : 指的是那些只有乙個形參,且引數型別是非本類型別的建構函式們. 一般能夠顯式呼叫 (例如 `myclass obj(5)`), 也能隱式呼叫: `fun(5);` fun的形參是`myclass`型別 

myclass.**件

class myclass;

myclass.cpp檔案

#include "myclass.h"

myclass::myclass(int i)

myclass::myclass(double n)

main.cpp檔案

int main()

3. 拷貝構造: 指的是只有乙個形參, 且引數型別是本類型別的引用. 一般是在定義乙個物件的時候, 將另乙個物件作為初始值時,就會自動呼叫這個版本的建構函式, 一般編譯器會預設提供乙個拷貝                  構造, 預設提供的拷貝構造會將物件的記憶體空間進行拷貝.

myclass.**件

class myclass;

myclass.cpp檔案

#include "myclass.h"

myclass::myclass(myclass& myclass)

//2.當myclass物件給另乙個myclass物件賦值時

//例: myclass myclass1;

// myclass myclass2 = myclass1;

//3.當函式返回值是myclass型別時:

//例: myclass createmyclass()

}myclass::myclass()

//深拷貝和淺拷貝的區別

//1.一般在類中存在指標時就必須使用深拷貝

myclass::myclass(myclass& myclass)

//2.深拷貝

myclass::myclass(myclass& myclass)

類中包含有指標成員的時候, 一般就需要自己編寫拷貝構造, 實現對指標指向的記憶體進行拷貝的                    功能. 否則預設拷貝構造是不會去拷貝指標指向的內容. (深拷貝和淺拷貝的區別)

4. 帶參構造 : 含有兩個以上的形參的建構函式統稱帶參構造.

myclass.**件

class myclass;

myclass.cpp檔案

#include "myclass.h"

myclass::myclass(int i ,int j)

類中建構函式的順序

title 類中建構函式的順序 date 2016 06 08 15 29 08 categories c tags c c 建構函式 在乙個class及其繼承類中,不但有父類,還有類的成員,還有子類。那麼父類的建構函式,成員變數的建構函式以及子類的建構函式的順序是怎麼樣的,有以下例題 includ...

C 中類的建構函式與複製建構函式

建構函式是類的特殊的成員函式,只要建立類型別的新物件,都要執行建構函式。建構函式的工作是保證每個物件的資料成員具有合適的初始值。建構函式的名字與類的名字相同,並且不能指定返回型別。像其他任何函式一樣,它們可以沒有形參,也可以定義多個形參。複製建構函式是一種特殊建構函式,具有單個形參,該形參 常用co...

C 語言 類中的建構函式和拷貝建構函式

在說這個之前我想問乙個問題,如果成員變數是私有的,我們怎麼初始化這些私有的成員變數?其實這就是建構函式的存在的理由,因為這個成員變數為私有的,要對它們進行初始化,必須用乙個 公有成員函式來進行。同時這個函式應該有且僅在定義物件時自動執行一次,這時呼叫的函式稱為構 造函式 constructor 下面...