C 建構函式

2021-07-02 16:44:32 字數 1379 閱讀 6973

c++建構函式

1、概念和定義格式

建構函式概念:函式名和類名相同,並且沒有返回值型別的函式(void也不能寫)

定義格式: 

class 類名

};注意: 

a.當物件被建立時建構函式會被自動呼叫,用於給物件中的成員變數進行初始化,建構函式不能手動呼叫.

b.如果自定義類中沒有自定義建構函式,那麼系統會自動提供乙個無參建構函式。   一旦我們自定義過建構函式,那麼系統就不再提供無參建構函式(預設的建構函式)。

c.無參建構函式未必是沒有引數,而是可以用無參的形式被呼叫.(就是使用預設引數)

2、建構函式中的初始化列表:

(1).初始化列表的格式:

class 類名

};注意:成員變數的初始化順序和初始化列表中的順序無關,而是取決於成員變數的宣告順序。下面我看一下筆試題:題目大概意思就是這樣的,

class dumy

};解決方案:

(1)交換成員變數的宣告順序(不推薦)

(2)dumy(string str):m_str(str),m_len(str.length()){}   //相當於:m_len = str.length(); m_str = str;

注意:int n = 66;

宣告:在類中出現的成員變數叫做宣告,宣告的時候不會申請記憶體空間,

定義:當物件被建立時,此時成員變數需要被定義,需要分配記憶體空間

初始化:當建構函式被呼叫時,會對成員變數進行初始化。

(2). 初始化列表的必要性

a.類中包含有常量和引用型的成員變數時,必須通過建構函式和初始化列表進行顯式的初始化。

b.在子類中顯示的構造它的基類部分時,必須使用初始化列表.

針對a的例子.

class cinit

};class a

};針對b的例子.

class b

};3.支援自定義轉換的建構函式

(1).格式: 目標類::目標類(const 源類& 源物件){}

(2).注意關鍵字explicit修飾建構函式,表示強制編譯器對隱式型別轉換做檢查,一旦出現隱式型別轉換直接報錯

class point2d;

class point3d

//explicit防止進行隱式型別轉換

explicit point3d(int x,int y = 30 ,int z = 40):m_x(x),m_y(y),m_z(z){}

//支援自定義型別轉換的建構函式

point3d(const point2d& pd);

void print()

{ cout<<"("<

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關鍵字 時,系統回自動呼叫給類的建構函式初始化新...