下面我們修改一下animal類的建構函式,增加兩個引數height和weight,分別表示動物的高度和重量。**如例2-13所示。
例2-13
雙擊**全選
12
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <
iostream.h
>
class animal
~animal()
void eat()
void sleep()
void breathe()
};
class fish:public animal
~fish()
};
void main()
當我們編譯這個程式時,就會出現如下錯誤:
那麼這個錯誤是如何出現的呢?當我們構造fish類的物件fh時,它需要先構造animal類的物件,呼叫animal類的預設建構函式(即不帶引數的建構函式),而在我們的程式中,animal類只有乙個帶引數的建構函式,在編譯時,因找不到animal類的預設建構函式而出錯。
因此,在構造fish類的物件時(呼叫fish類的建構函式時),要想辦法去呼叫animal類的帶引數的建構函式,那麼,我們如何在子類中向父類的建構函式傳遞引數呢?可以採用如例2-14所示的方式,在構造子類時,顯式地去呼叫父類的帶引數的建構函式。
例2-14
雙擊**全選
12
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <
iostream.h
>
class animal
…
};
class fish:public animal
…
};
void main()
注意程式中以粗體顯示的**。在fish類的建構函式後,加乙個冒號(:),然後加上父類的帶引數的建構函式。這樣,在子類的建構函式被呼叫時,系統就會去呼叫父類的帶引數的建構函式去構造物件。這種初始化方式,還常用來對類中的常量(const)成員進行初始化,如下面的**所示:
雙擊**全選
12
3
4
5
6
7
8
class point
;
當然,類中普通的成員變數也可以採取此種方式進行初始化,然而,這就沒有必要了。
呼叫父類的帶引數的建構函式
下面我們修改一下animal類的建構函式,增加兩個引數height和weight,分別表示動物的高度和重量。如例2 13所示。例2 13 雙擊 全選 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...
C 子類顯示呼叫父類的建構函式
加入有父類是這樣定義的 view plain copy to clipboard print?class ca ca int k virtual ca void output private int m 注意a類裡面有乙個私有成員m.假設有乙個子類是這樣定義的 view plain copy to ...
C 子類顯示呼叫父類的建構函式
加入有父類是這樣定義的 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 classca ca intk virtual ca voidoutput private intm 注意a類裡面有乙個私有成員m.假設有乙個子類是這樣定義的 1 2 3 4 class...