mysql 建構函式 建構函式

2021-10-18 05:38:02 字數 1692 閱讀 6938

建構函式主要是用來建立物件時為物件賦初值來初始化物件。總與new運算子一起使用在建立物件的語句中 。a a=new a();

建構函式具有和類一樣的名稱;但它是乙個函式具有函式的所有特性,同乙個類裡面可以有多個引數不同的建構函式,也就是函式的多型。

建構函式是在例項化類時最先執行的方法,通過這個特性可以給物件賦初值。

建構函式沒有返回值,也不能用void修飾,只有訪問修飾符。

每個類中都會乙個建構函式,如果使用者定義的類中沒有顯式的定義任何建構函式,編譯器就會自動為該型別生成預設建構函式,類裡面沒有建構函式也可以,系統會為你自動建立無參建構函式。

例:class test //test類

public test()

//建構函式,初始化物件

建構函式,目的是用於初始化類。比如你定義了乙個類a

class a

那麼建構函式寫法就是

public a()  //括號內可以有引數

//用於初始化的語句(沒有引數就叫做預設建構函式)

//注意:乙個類可以有多個建構函式,可根據其引數個數的不同或引數型別的不同來區分它們 即建構函式的過載。

每次要用類a時,比如 a a = new a(); //如果前面定義的建構函式有引數,那這裡必須傳參

建構函式不能被直接呼叫,必須通過new運算子在建立物件時才會自動呼叫;而一般的方法是在程式執行到它的時候被呼叫的;每次例項化(既上面的new a())乙個類時,就會呼叫建構函式。

雖然在一般情況下,建構函式不被顯式呼叫,而是在建立物件時自動被呼叫。但是並不是不能被顯示呼叫。有些時候是一定要顯示呼叫的,只要是父類有帶參的建構函式,在子類中就必須顯示的呼叫父類的建構函式,因為子類的構造器在例項化時無法找到父類的建構函式(當父類有自己寫的無參建構函式時,子類也不用顯示呼叫)。

建構函式的過載:所謂過載,就是引數列表不同的幾個同名方法,建構函式的過載其實和方法的過載沒什麼太大的區別,無非訪問修飾符為public ,沒用返回值型別。下面寫乙個小例子:

1 class animal

2 19 //建構函式過載

20 public animal()

21 23 public animal(string name, string color)

24 28 public animal(string name, string color, int speed)

29 37 //名稱

38 private string name;

39 public string name

40 42 set

43 }

44 //顏色

45 private string color;

46 public string color

47 49 set

50 }

51 //速度

52 private int speed;

53 public int speed

54 56 set

57 }

58 //方法的過載run方法的不同實現

59 public void run()

60 64 public void run(int speed)

65 71 }

結果如下圖所示:run方法的兩種過載實現是一樣的。

mysql 建構函式 建構函式 prototype

functionstart uname,age var zjl new start zjl 41 var reol new start reol 22 以上的建構函式中,new了zjl和reol兩個物件,存在乙個sayhai的方法,二者的內容一樣,但由於方法為複雜資料型別,會分別開闢乙個新的記憶體空...

建構函式 拷貝建構函式 賦值建構函式

class和struct很大乙個區別在於,c除了成員的訪問控制許可權,struct中的成員預設是public,而class中的field預設是private class還有乙個special的地方是它有建構函式 constructor。建構函式是class中的一員,和成員變數 其他成員函式一起構成乙...

構造函式呼叫建構函式

題目如下 問下列 的列印結果為0嗎?include stdlib.h include iostream using namespace std struct clscls int main 列印結果是不定的,不一定為0 奇怪的地方在於建構函式中呼叫了自己的另乙個建構函式 我們知道,當定義乙個物件時,...