- 締切済み
継承における暗黙のデフォルトコンストラクター
”継承の際、スーパークラスで引数なしのコンストラクターが省略せずにきちんと記述されるなら、そのサブクラスでコンストラクターを記述しなくても、スーパークラスの引数なしのコンストラクターが受け継がれるためコンパイルエラーがおきない。”のは分かりますが”スーパークラスで引数なしのコンストラクターが省略され、かつサブクラスでコンストラクターを省略した場合”はなぜコンパイルエラーがおきるのでしょうか? 暗黙の内にスーパークラスにコンストラクターが生成され、それがサブクラスに受け継がれることは出来ないのでしょうか? 宜しく願います。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.1
後者の「スーパークラスで引数なしのコンストラクターが省略され、かつサブクラスでコンストラクターを省略した場合」というのは「スーパークラスで引数を持つコンストラクタが宣言されている」ということでいい? もしそうなら, デフォルトコンストラクタは自動生成されないはず. というか, むしろ自動生成されたら困る. で, サブクラスで自動生成されるデフォルトコンストラクタは「スーパークラスのデフォルトコンストラクタを呼び出す」から, エラーになる. ついでにいうと, コンストラクタは「受け継がれる」ものではないです.