回覆列表
-
1 # 天涯浪子王有生227
-
2 # 軟萌小兔嘰
比如你定義了一個class A類,裡面沒有寫任何建構函式,則系統會自動給你生成一個預設建構函式該函式是A(),該預設建構函式是沒有引數的,所以他同時是一個無參建構函式。無參建構函式就是函式沒有引數,說白了就是函式的括號裡沒有任何東東。比如A()帶有預設值的建構函式是有引數的建構函式,不過如果你呼叫時不傳入任何引數則使用預設值。A(int i = 0){ cout << i << endl;}如果你在主函數里呼叫A(),則輸出預設值0,如果你呼叫時傳入值A(2),則輸出你傳入的值,也就是2
其實在C#中是沒有函式這一稱呼的,也就是說只要是物件裡的就是成員方法,而函式則是從其他語言中沿用過程的,也就是說我們一般稱不屬於任何物件的函式為為函式,只要有屬於某個物件的函式都稱為該物件的成員方法——所以不再使用函式這一個稱謂的原因。函式是對於SP也就是面向過程程式設計來說的一個概念,而面向物件中是不存在這樣的函式的,所謂就沒有函式的稱謂了。 但是由於以前語言中的陋習,我們還可以稱成員方法為函式,其實都是成員方法的。所以不論是構造方法還是建構函式指的是同一概念。雖然也有些人稱靜態的方法為函式,但其實還是靜態方法。 在面向物件中有一個術語,建構函式可以過載,也就是有多個不同的形式,引數列表的不同,而具有相同名字的同一物件成員方法都是過載。不管是靜態還是普通的, 都是一樣的。所以是這兩個無任何概念上的區別。