有時我們在derived-class的constructor提供的參數,事實上是base-class的資料,或者base-class根本就是ABC(abstract base class),這時我們就得在derived-class的constructor去呼叫base-class的constructor。


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

29

30



31

32



33

34

35

36

37



38

39

40

41

執行結果


32行的constructor提供了兩個參數,name為base-class的資料,而lab為derived-class的資料,所以勢必呼叫base-class的constructor才行,C++的方式是在constructor initializer list中呼叫base-class的constructor名稱,並帶入參數,這樣就可以執行base-class的constructor了。
C#是在constructor initializer list使用base這個keyword,而Java是在body中使用super這個keyword。
See Also
(原創) derived-class要怎麼呼叫base-class的constructor? (.NET) (C#)
(原創) derived-class要怎麼呼叫base-class的constructor? (Java)
Reference
C++ Primer 4th section 15.4.2 p.582