類的建構函式初探

2021-08-01 15:29:10 字數 924 閱讀 5974

每個類都定義了它的物件被初始化的方式,類通過乙個或幾個特殊的成員函式來控制其物件的初始化過程,這些函式叫做建構函式。只要類的物件被建立,就會執行建構函式。

建構函式的名字與類名相同,沒有返回值,可以過載,不能被宣告為const的。如果類中沒有建構函式,編譯器會提供乙個預設的建構函式,預設的建構函式會對類的資料進行類內初始值初始化或者預設初始化,預設初始化則是隨機值。

一般來說,我們都會為類提供乙個帶引數的建構函式,採用建構函式初始值列表的形式或者賦值的形式,分別如下所示:

class

student //

自己定義的建構函式

private:

std::string name;

int number = 0;

double grade = 0;     

這是採用建構函式初始值列表的形式。

class

student

private:

std::string name;

int number = 0;

double grade = 0;

這是採用賦值的形式。

初始化和賦值的區別在於:前者直接初始化資料成員,後者則先初始化再賦值。這樣前者的效率更高。除此之外,如果成員是const、引用或者屬於某種未提供預設建構函式的類型別,則必須採用建構函式初始值列表的形式。

另外,如果自己定義了建構函式,那麼編譯器就不再提供乙個預設的建構函式,所以一般會自己再定義乙個預設的建構函式,通過student() =default產生乙個預設的建構函式。上述類的完整建構函式定義如下:

class

student //

自己定義的建構函式

private:

std::string name;

int number = 0;

double grade = 0;     

抽象基類建構函式初探

抽象基類建構函式可以定義在類外麼?顯然可以 pragma once include using std string class quote virtual double netprice size t n const virtual quote default private string boo...

類的建構函式

引題 定義乙個型別 circle,圓 成員 圓心座標 x,y 半徑radius class circle 如何讓乙個物件在被建立的時候,就賦予初始值 方法是建構函式 建構函式是類的一種特殊的成員函式 1.函式名與類名必須相同 2.沒有返回值 egclass circle 建構函式可以帶引數,也可以過...

類的建構函式

1 建構函式可以和普通函式一樣有引數,但不能有返回值。2 實際應用中,如果沒有給類定義建構函式,則編譯系統將為該類生成乙個預設的建構函式,該預設的建構函式沒有引數,值是將物件中的所有例項變數都初始化為0 3 建構函式可以有預設引數,也可以不帶引數。關於this指標的乙個精典回答 當你進入乙個房子後,...