什麼是建構函式?
建構函式是類的成員函式,用於初始化類的物件。
在c ++中,建立物件(類的例項)時會自動呼叫constructor。
它是該類的特殊成員函式。
建構函式與普通成員函式有何不同?
建構函式與普通函式在以下方面有所不同:
用乙個真實的例子來了解c ++中建構函式的型別。
假設您去商店買了乙個記號筆。
當您想購買標記筆時,有哪些選擇?
第乙個你去商店說要給我乙個記號筆。
因此,只說給我乙個標記就意味著您沒有設定哪個品牌名稱和哪種顏色,也沒有提及任何事情,只是說您想要乙個標記。
因此,當我們說我只想要乙個標記筆時,無論市場上還是他的商店中經常**的標記筆,他都將交給他。
這就是預設的建構函式!
第二種方法是您去商店說我要乙個標記為紅色和xyz品牌的標記。
所以您提到這件事,他會給您這個標記。
因此,在這種情況下,您已經給出了引數。
這就是引數化的建構函式!
然後是第三個,您去商店說我要這樣的記號筆(您手上的記號筆)。
因此,店主將看到該標記。
好的,他會為您提供乙個新標記。
因此,複製該標記。
這就是複製建構函式!
預設建構函式: 預設建構函式是不帶任何引數的建構函式,比如下面的例子:
//cpp program to illustrate the
//concept of constructors
#include using
namespace
std;
class
construct };
intmain()
注意:即使我們沒有顯式定義任何建構函式,編譯器也會自動隱式提供預設的建構函式。
引數化的建構函式:可以將引數傳遞給建構函式。
通常,這些引數有助於在建立物件時初始化物件。
要建立引數化的建構函式,只需像對其他任何函式那樣向其新增引數即可。
定義建構函式的主體時,請使用引數初始化物件。
#include usingnamespace
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,而原物件則沒有初始化。這種問題在類中有指標需要分配空間時會導致災難。從...