c裡建構函式是什麼概念,請問C 中一個建構函式後面加個冒號是什麼意思

2021-08-26 05:04:38 字數 3611 閱讀 6047

1樓:孟儂

1 和類名相同

2 沒有返回值型別宣告

還有除了以上說的倆點,還要注意:

二.建構函式的定義

建構函式的名字不能隨便起,必須讓編譯器認得出才可以被自動執行。它的命名方法既簡單又合理:讓建構函式與類同名。

除了名字外,建構函式的另一個特別之處是沒有返回值型別,這與返回值型別為void的函式不同。如果它有返回值型別,那麼編譯器將不知所措。在你可以訪問一個類的方法、屬性或任何其它東西之前, 第一條執行的語句是包含有相應類的建構函式。

甚至你自己不寫一個建構函式,也會有一個預設建構函式提供給你。

class testclass

// 由clr提供

} 下面列舉了幾種型別的建構函式

1)預設建構函式

class testclass

希望可以幫上你的忙哦

2樓:糖糖寳寳

建構函式 ,是一種特殊的方法,主要用來在建立物件時初始化物件, 即為物件成員變數賦初始值,總與new運算子一起使用在建立物件的語句中,特別的一個類可以有多個建構函式 ,可根據其引數個數的不同或引數型別的不同來區分它們 即建構函式的過載。

如果一個類中沒有定義任何的建構函式,那麼編譯器只有在以下三種情況,才會提供預設的建構函式:

1、如果類有虛擬成員函式或者虛擬繼承父類(即有虛擬基類)時;

2、如果類的基類有建構函式(可以是使用者定義的建構函式,或編譯器提供的預設建構函式);

3、在類中的所有非靜態的物件資料成員,它們對應的類中有建構函式(可以是使用者定義的建構函式,或編譯器提供的預設建構函式)。

3樓:不ke愛

倆特點..

1 和類名相同

2 沒有返回值型別宣告

請問c++中一個建構函式後面加個冒號是什麼意思

4樓:匿名使用者

a(b)實際上是做的是用b初始copy化a的成員x;既x=b;

:是初bai始化列表方式,建議你看看相du關章節再來理解.

b1(int a=0,int b=0):a(b) //就是zhi這句其實可以dao寫成:

b1(int a=0,int b=0):a(b),y1(a){}這就是初始化列表方式,你要是這都沒弄懂,就到繼承了,那肯定更不好理解!

5樓:端武者

初始化列表,跟在{}裡面的初始化沒有什麼不同,但在非靜態const型別以及引用型成員變數必須在初始化列表裡面初始化,不能在{}裡面初始化.a(b)就是用父類的建構函式進行一部分初始化.

6樓:兜裡有兩塊糖

當類繼承的時候,其實是沒有繼承類的建構函式的,所以在對派生類中必須對基類進行初始化,而這個初始化必須是以初始化列表的形式初始化。

7樓:匿名使用者

表示類之間的繼承關係,即 class b1 繼承了class a 的所有成員和操作函式

c++建構函式後面加冒號是什麼意思?後面應該加什麼內容呢?是賦初值嗎?

8樓:匿名使用者

冒號後面跟的是賦值,這種寫法是c++的特性。

a( int aa, int bb ):a(aa),b(bb)

相當於a( int aa, int bb )

c++ 建構函式前面加個~表示啥

9樓:我家的夏爾

解構函式:

當一個類的物件離開作用域時,解構函式將被呼叫(系統自動呼叫)。解構函式的名字和類名一樣,不過要在前面加上 ~ 。對一個類來說,只能允許一個解構函式,解構函式不能有引數,並且也沒有返回值。

解構函式的作用是完成一個清理工作,如釋放從堆中分配的記憶體。

一個類中可以有多個建構函式,但解構函式只能有一個。物件被析構的順序,與其建立時的順序相反,即後構造的物件先析構。

10樓:

第一個建構函式

第二個解構函式

c++為什麼一定要定義無參建構函式?是用來做什麼的?

11樓:育知同創教育

c++中無參構造來函式的作用:

該類物件源被建立時,編譯系統物件分配記憶體空間,並自動呼叫該建構函式->由建構函式完成成員的初始化工作。

故:建構函式的作用:初始化物件的資料成員。

舉例:class counter

private:

// 資料成員

int m_value;

}counter()是一個無參建構函式,就是為了初始化m_value的。

12樓:匿名使用者

可以不用定義啊。

只要有一個構

造函式就可以,甚至建構函式都可以是私回

有的。類定義必答須要提供建構函式,作用是對類初始化,這個是建構函式的作用,建議好好理解一下。

單例模式中,建構函式是私有的,**如下:

class csingleton

static csingleton *m_pinstance;

public:

static csingleton * getinstance()};

13樓:阡陌她人只為你

並不是一定要定義,主要防止你重新定義了有參建構函式,定義了物件卻沒有初始化。。。

14樓:匿名使用者

沒有這個要求,可以不定義的

在c++類中,定義建構函式的目的是什麼

15樓:糖糖寳寳

建構函式通常用於在例項化物件時自動對內部資料成員初始化,設定初始值、分配記憶體空間等。

而解構函式則用於刪除物件時做收尾工作,比如釋放申請的空間等。

要建立一個物件,就得呼叫建構函式。

要銷燬一個物件,就會被迫的呼叫解構函式。

如果成員函式宣告稱static,不建立物件也能呼叫 靜態成員函式。

16樓:匿名使用者

根據你的需要來自定義建構函式。

c++規定,每一個類必須有一個建構函式。如果在class中沒有定義建構函式,編譯器會自動構建。當然編譯器定義的函式不會執行任何事件。

如果需要在class建立時執行一些時間,就可自定義class的建構函式。

c++類的呼叫:

c++類的呼叫:

17樓:匿名使用者

讓我來告訴你答案!用來在建立物件時初始化物件

18樓:匿名使用者

簡單來說,就是初始化類中資源,使得在使用時有正確的值可用。另外就是做一些準備工作

19樓:匿名使用者

沒多大用,虛擬機器會預設為你加一個沒有引數的構造方法!

20樓:匿名使用者

用來在建立物件時初始化物件

21樓:

初始化物件啊,給物件賦初始值等

22樓:豆綠夏袁麗

可以在類外定義的。實際寫較大一些的程式一般是這樣做的:建立一個標頭檔案,裡面是類的定義,一些常量和變數的定義,然後再對應的cpp檔案中進行實現。

c 類中的建構函式 point int x,int y x x ,y y其中x和y已被宣告

建構函式的引數不要和類成員一樣。起碼寫成point int x t,int y y x x t y y t 這段 的意思是初始化x x,y y c 中point int x,int y x x y y 是什麼意思 建構函式冒號後頭那個叫初始化列表,用於初始化類的成員屬性,這裡相當於內 point i...

c中的建構函式前加上eplicit有什麼用

c 提供了關鍵字explicit,可以阻止不應該允許的經過轉換建構函式進行的隱式轉換的發生。宣告為explicit的建構函式不能在隱式轉換中使用。c 中,一個引數的建構函式,承擔了兩個角色。1 是個構造器 2 是個預設且隱含的型別轉換操作符。所以,有時候在我們寫下如 aaa 這樣的 且恰好 的型別正...

C中如何呼叫靜態類中的建構函式

靜態建構函式既沒有訪問修飾符,也沒有引數。如果沒有編寫靜態建構函式,而這時類中包含帶有初始值設定的靜態欄位,那麼編譯器會自動生成預設的靜態建構函式。在建立第一個類例項或任何靜態成員被引用時,net將自動呼叫靜態建構函式來初始化類,也就是說我們無法直接呼叫靜態建構函式,也就無法控制什麼時候執行靜態建構...