C 中的建構函式

2022-06-16 15:33:13 字數 1752 閱讀 8035

什麼是建構函式?

建構函式是類的成員函式,用於初始化類的物件。

在c ++中,建立物件(類的例項)時會自動呼叫constructor。

它是該類的特殊成員函式。

建構函式與普通成員函式有何不同?

建構函式與普通函式在以下方面有所不同: 

用乙個真實的例子來了解c ++中建構函式的型別。

假設您去商店買了乙個記號筆。

當您想購買標記筆時,有哪些選擇?

第乙個你去商店說要給我乙個記號筆。

因此,只說給我乙個標記就意味著您沒有設定哪個品牌名稱和哪種顏色,也沒有提及任何事情,只是說您想要乙個標記。

因此,當我們說我只想要乙個標記筆時,無論市場上還是他的商店中經常**的標記筆,他都將交給他。

這就是預設的建構函式!

第二種方法是您去商店說我要乙個標記為紅色和xyz品牌的標記。

所以您提到這件事,他會給您這個標記。

因此,在這種情況下,您已經給出了引數。

這就是引數化的建構函式!

然後是第三個,您去商店說我要這樣的記號筆(您手上的記號筆)。

因此,店主將看到該標記。

好的,他會為您提供乙個新標記。

因此,複製該標記。

這就是複製建構函式!

預設建構函式: 預設建構函式是不帶任何引數的建構函式,比如下面的例子:

//

cpp program to illustrate the

//concept of constructors

#include using

namespace

std;

class

construct };

intmain()

注意:即使我們沒有顯式定義任何建構函式,編譯器也會自動隱式提供預設的建構函式。

引數化的建構函式:可以將引數傳遞給建構函式。

通常,這些引數有助於在建立物件時初始化物件。

要建立引數化的建構函式,只需像對其他任何函式那樣向其新增引數即可。

定義建構函式的主體時,請使用引數初始化物件。 

#include using

namespace

std;

class

point

intgetx()

intgety()

}; intmain()

當在引數化建構函式中宣告物件時,必須將初始值作為引數傳遞給建構函式。

物件宣告的常規方法可能不起作用。

建構函式可以顯式或隱式呼叫。

example e = example(0, 50); //

顯式呼叫

example e(

0, 50); //

隱式呼叫

是的,這稱為建構函式過載。

3.複製建構函式:複製建構函式是乙個成員函式,它使用同一類的另乙個物件初始化乙個物件。

有關複製建構函式的

詳細文章

。每當我們為乙個類定義乙個或多個非預設建構函式(帶引數)時,也應顯式定義乙個預設建構函式(不帶引數),因為在這種情況下編譯器將不提供預設建構函式。

但是,沒有必要,但是始終定義預設建構函式被認為是最佳實踐。 

更多資料見: c ++中的構造方法

C 中構造函式呼叫建構函式

include include using namespace std struct cls cls int main 列印結果是不定的,不一定為0 奇怪的地方在於建構函式中呼叫了自己的另乙個建構函式 我們知道,當定義乙個物件時,會按順序做2件事情 1 分配好記憶體 非靜態資料成員是未初始化的 2 ...

C 中構造函式呼叫建構函式

include stdlib.h include iostream using namespace std struct clscls int main 列印結果是不定的,不一定為0 奇怪的地方在於建構函式中呼叫了自己的另乙個建構函式 我們知道,當定義乙個物件時,會按順序做2件事情 1 分配好記憶體...

c 中構造函式呼叫建構函式

c 中建構函式完成的工作分兩步 1 分配空間 2 初始化空間 構造函式呼叫建構函式。class a a int a private int a 這樣會導致,a 中先分配了空間,然後呼叫a 0 又建立了乙個臨時物件,然後初始化為0,而原物件則沒有初始化。這種問題在類中有指標需要分配空間時會導致災難。從...