建構函式和預設建構函式有什麼區別

時間 2025-03-30 11:10:24

1樓:網友

1、建構函式的函式名稱與類名同名,其他方法(函式)名稱可以自定義。

2、建構函式僅在物件被建立時系統會根據給定的引數以及類中的建構函式定義進行選擇呼叫,如果類中沒有定義建構函式,系統預設會提供乙個無參構造空函式,什麼都不會做,只是滿足介面要求,建構函式不能被顯式呼叫。其他函式根據程式設計師需要而呼叫,且必須顯式呼叫。

3、由於物件建立後,系統必須返回新建物件的位址,賦值給指標變數(c++,c#中是將引用賦值給物件變數,其實一樣,內部也是物件位址),那麼換句話說,返回介面被系統佔用了,因此建構函式就不能返回任何型別值,所有帶返回值建構函式的定義編譯器都不會通過。結果就是建構函式沒有也不能有返回型別,而其他函式隨意。

4、由於建構函式的作用只是在建立物件時用來初始化成員變數和物件的,因此建構函式不能被繼承也不能使用介面。換句話說,因為建構函式只在物件建立時會被呼叫,其他情況下永遠不會被呼叫,因此如果對乙個類定義乙個介面,介面中提供了建構函式的介面的話,該函式介面是永遠無法被顯式呼叫的,顯得多餘了,因此如果為建構函式定義介面,編譯器會報錯。(new乙個物件的時候new的是類,不會new介面)

2樓:雲海

你好好事還是我和我說說我經濟科技商務。

什麼叫建構函式

3樓:酷月之心

簡單地說建構函式是類函式,函式名與類名完全相同,無返回值建構函式屬於類的成員函式,除了具有一般成員函式的特點外,還具有自己的特點:

1)是類的乙個特殊的成員函式,函式名與類名相同;

2)訪問屬性應該是public;

3)功能是初始化物件,在建構函式中一般不作初始化以外的事情;

4)可以在類內定義,也可在類外定義;

5)無函式返回型別,注意:什麼也不寫,也不可寫為void;

6)程式執行時,當物件被建立後,該物件所屬的類的建構函式自動被呼叫,在該物件生存期中也只呼叫這一次;

7)可以過載。

建構函式與普通函式的區別

4樓:網友

1. 返回值型別的區別:

1. 建構函式是沒有返回值型別 的,2. 普通函式是有返回值型別的,即使函式沒有返回值,返回值型別也要寫上void。

2. 函式名的區別:

1. 建構函式的函式名必須要與類名一致,2. 普通函式的函式名只要符合識別符號的命名規則即可。

3. 呼叫方式的區別:

1. 建構函式是 在建立物件的時候由jvm呼叫的。

2. 普通函式是由我們使用物件呼叫的,乙個物件可以物件多次普通 的函式,4. 作用上的區別:

1. 建構函式 的作用用於初始化乙個物件。

2. 普通函式是用於描述一類事物的公共行為的。

建構函式和構造方法是同一概念嗎?

5樓:莫道無情

是同一概念。建構函式 ,是一種特殊的方法。主要用來在建立物件時初始化物件, 即為物件成員變數賦初始值,總與new運算子一起使用在建立物件的語句中。

建構函式的函式名和類名一致,預設的建構函式沒有引數,沒有返回值,建構函式的函式體內,沒有內容。

6樓:網友

是同乙個概念,不是很嚴格的話,我們還可以稱成員方法為函式,其實都是成員方法的。所以不論是構造方法還是建構函式指的是同一概念。雖然也有些人稱靜態的方法為函式,但其實還是靜態方法。

在物件導向中有乙個術語,建構函式可以過載,也就是有多個不同的形式,引數列表的不同,而具有相同名字的同一物件成員方法都是過載。不管是靜態還是普通的, 都是一樣的。所以是這兩個無任何概念上的區別。

7樓:匿名使用者

建構函式 是:

某個函式具有某個功能。

構造方法是:

這個函式在特定的環境下與其他的函式相連用,而構成的方法。

函式相同,方法不同。

8樓:

不是,,建構函式沒有返回值。而構造方法有返回值。

什麼是建構函式?建構函式可以過載嗎?為什麼

與類名稱具有一樣名稱的成員函式是建構函式。建構函式不能有返回值,甚至不能有return語句。說明一個有返回值的建構函式是錯誤的,取建構函式的地址也是錯誤的。如果一個類有建構函式,在程式中每個該類型別的物件在使用之前由此建構函式進行初始化 有關初始化的更多資訊參見本章後面的 用特殊成員函式進行初始化 ...

c 建構函式過載,C 建構函式過載的問題?

應該是object 1 10 呼叫 sum int object 2 10.5 呼叫 sum double 因為c 在呼叫函式是會自動識別資料型別,如果你把10改為10.0,也是呼叫sum double 了 主要看你的引數是什麼型別的,如果是整型就呼叫sum int 浮點型的呼叫sum double...

c中建構函式與解構函式的問題,C 中建構函式與解構函式的問題

你的getname函式在 你的類定義中只有getscore和getid c 關於建構函式和解構函式呼叫次數的問題 沒問題啊。引數傳遞的時候第一次拷貝構造呼叫,在函式返回的時候賦值給c2 再次呼叫了拷貝構造。析構的話 c1 c2 c 三次 傳遞引數和返回引數各一次拷貝建構函式,所以是2次 有兩個物件c...