(原創) 一個關於constructor的觀念問題 (C/C++) (.NET) (C#) (Java)

Abstract
一個在JavaWorld@TW有人發問的問題,雖然是Java,但在C++,C#都適用。

Introduction
http://www.javaworld.com.tw/jute/post/view?bid=29&id=140687&sty=1&tpg=4&age=0

1public class son extends father
2{
3      public son( int i ){  }
4      public son( int i , float f)
5      {
6           super( i,f);  
7       }

8}


請問在father裡要加上那些建構子?

A:public father(){}
B:public father(int k){}
C:public father(int i, flaot f){}
D:public father(float f){}

答案是A,C,你答對了嗎?

3行public son(int i)這個constructor,因為沒有呼叫任何base-class的constructor,所以compiler會自動在body加上super()去呼叫base-class的default constructor,所以要選A。

4行public son(int i, float f)這個constructor,因為呼叫了base-class的super(i,f),compiler就不自動加上super()了,因此base-class須加上public father(int i, float f) {},所以要選C。

更詳細的理由請參考(原創) 為什麼derived-class會去執行base-class的default constructor? (C/C++)

See Also
(原創) 為什麼derived-class會去執行base-class的default constructor? (C/C++)
(原創) default constructor的迷思 (C/C++)

posted on 2007-02-16 15:22  真 OO无双  阅读(1541)  评论(1编辑  收藏  举报

导航