在C中類的構造器,與類中的方法是如何區分的

時間 2021-08-11 17:42:29

1樓:匿名使用者

兩位肯定是理解了,但是卻說錯了。

另外,樓主說「構造器」,我不知道你這說法**看來的,構造方法/建構函式的英文是constructor,如果你直譯,那確實是。而構造器,更多是見於一些設計模式中。

如何區分取決於誰來區分。對面對**的程式設計師來說,構造方法不是「沒有型別修飾符」,也更不是「沒有修飾符」。

1.構造方法可以使用訪問修飾符:private, public, internal,protected

著名的設計模式工廠方法和單件模式就是運用了私有建構函式

2.不可以使用virtual, abstract, override, new, sealed,

3.沒有返回型別

4.方法名與類名相同。

另外一個與類同名的方法是析構方法,區別是在名稱前加一個~(波浪號),不能overload,不含修飾符。

5.雖然可以有靜態建構函式,但是靜態建構函式不能指定引數和訪問修飾符。

6.struct同樣可以編寫自定義的建構函式,但是相反的,不能編寫無參(預設)的建構函式。

7.構造方法和普通方法相比,多出的內容:

this關鍵字。可以形成建構函式橫向的鏈式呼叫。this呼叫的是該類自身的建構函式

base關鍵字。建構函式縱項的鏈式呼叫。base呼叫的是直接父類的建構函式。

2樓:我的她最美

構造器沒有修飾符,名稱與類名相同,在例項化類的時候會自動執行構造器裡面的內容,每個類宣告的時候都會預設一個構造器。

如:class a //你宣告時候的樣子

等價於class a:object//所有類都繼承與object類} 構造器與方法的最大區別在於構造器沒有任何修飾符。是一種特殊的方法

3樓:匿名使用者

構造方法沒有型別修飾符,而且與類同名

public class user}

c# 在一個類中有兩個名稱相同的建構函式,它們所含引數個數相同,型別不同,使用的時候怎麼區分開

4樓:愛

class 自定義類

public string 中文月份(string 中文)}自定義類 月份 = new 自定義類();

messagebox.show(月份.中文月份(9) + "····" + 月份.中文月份(月份.中文月份(9)));

當呼叫是檢視引數列表進行選擇.

5樓:匿名使用者

靠引數型別區別!編譯器根據引數型別和數量,自動匹配合適的建構函式

6樓:鳶尾花語

這是過載,你傳遞不同的型別的值就可以了

你傳遞string 就會自動呼叫上面那個

int就呼叫下面的那個

7樓:人定勝天

不用區分開,程式會根據你傳的引數型別自動判斷!

c#程式理解,怎麼理解建構函式,建構函式名字為什麼和類名是一樣的呢??

8樓:匿名使用者

建構函式是物件導向的程式設計中出現的一種方法,它是每個類都會有的方法,作用是構造及初始化物件。為了程式編譯時能很好地辨識這個必須的「建構函式」。那這個建構函式的名字最好就有一定的規定。

現在規定了建構函式名字和類名一致,編譯時就知道哪些是建構函式, 例項化物件時就會呼叫合適的建構函式進行類的例項化。

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

建構函式是類自己在物件剛剛建立時候自己呼叫的,一般不允許使用者自己顯示呼叫建構函式。使用者只要將建構函式寫好,類在例項化物件的時候自動呼叫合適的建構函式對物件進行初始化(若有多個建構函式,系統會根據建構函式的形參來進行選擇)。

你可能會看到有些類沒有建構函式,這時候編譯器會自動生成一個形參為空的函式體為空的建構函式給該類。總之,建構函式是必須的。

你說的不懂的地方,其實就是在例項化kkk這個物件的時候,即kkk剛建立的時候,系統對自動呼叫一次program類的建構函式。這就是建構函式唯一一次呼叫的地方。使用者是不能顯示呼叫建構函式的。

這和c語言是有區別的,建構函式用於物件的初始化,這樣可以使物件的封裝性更好。

9樓:大海泛舟

可以這樣理解,它就像是做程式一樣,後臺中可能有好多的事件,但必須要執行的是page_load事件,讓它顯示一些值,別的事件你可以呼叫也可以不用;再說的白一點,就是給這個類賦一個初始值,使程式知道有這麼個類,它必須執行的就是這個建構函式,然後你可以對這個類裡面其它資料進行修改

10樓:匿名使用者

建構函式只有在類被例項化時(new時)呼叫一次,也可以理解成對類的初始化動作!

11樓:非馬

在c#中例項化類的時候總會自動呼叫建構函式,就算你沒有定義建構函式,編譯器也會自動加上一個預設的建構函式。不存在為什麼。

12樓:匿名使用者

建構函式是類實列化的依據,

建構函式名字和類名一樣是一種約定,談不上為什麼

c#,怎麼區分預設建構函式和建構函式,等...

13樓:左洛飛

1 因為你new一個類 沒有加引數所以呼叫的是第一個建構函式 如果你寫類的時候不加建構函式 系統是會給他一個預設的因為new 一個類會首先呼叫建構函式

2 this.name 是指當前類的name 也就是name是指這個函式的引數那麼

3 因為 他有返回值 建構函式是沒有返回值的

14樓:匿名使用者

no.1:首先建構函式沒有返回值定義,void也不行。沒引數的就是預設建構函式;再有,定義了一個有引數的建構函式,就無法呼叫預設建構函式。

no.2:是滴。不過不建議這樣命名,最好有區別,容易頭暈;推薦引數名前加set字首,這樣程式設計時一目瞭然。

no3:最直觀的判斷是名稱後面有(),以及大括號內的方法語句,沒的話有可能是屬性,不過索引屬性this[object var]後面可是有

C中類的建構函式怎麼呼叫這個類的另建構函式

就是 myclass myclass new myclass 這句 在建立物件的時候 它會自己呼叫無引數的建構函式 上邊的同志說的 很對啊! myclass myclass new myclass 這樣應該就可以了!c 中例項化的時候,new關鍵字用於建立物件和呼叫建構函式。呼叫建構函式是什麼意思?...

在C 的類中構造陣列的解決方案

你可以這樣 private中只要宣告一個char ptr 或者void ptr 然後一次性new一塊 raw memory,具體方法是ptr new sizeof base size 然後每增加一個base到陣列中的時候再初始化,具體方法是 base mybase new ptr base 10 這...

c 類與物件,c 中類和物件的關係

include using namespace std class a public a a int jc int x int getx return n 此處不是成員函式,應刪掉。private int n static int count a a cin n count a a cout usi...