您的位置:首页 > 编程语言 > C语言/C++

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

2007-02-16 15:22 537 查看
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 public son( int i ) public son( int i , float f)
5 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++)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐