在繼承中,子類可以在建構函式中顯式呼叫父類的建構函式,來初始化父類的成員。
class myshape
}class myrect : myshape
}
如果沒有顯式呼叫,那麼編譯器會自動幫你呼叫父類的預設建構函式。因為編譯器非常傻,所以,在自動呼叫的過程中可能會面臨著一些問題。
1.父類沒有宣告建構函式,子類沒有顯式呼叫父類建構函式
父類沒有宣告建構函式,則編譯器會為他生成乙個預設無參建構函式。子類沒有顯式呼叫父類建構函式,編譯器就會為他呼叫父類的預設無參建構函式。
2.父類宣告了有參建構函式,子類沒有顯式呼叫父類建構函式
父類宣告了有參建構函式,則編譯器不會為他生成無參建構函式,子類沒有顯式呼叫父類建構函式,也沒有無參建構函式可以調自動用,則會報錯。
class myshape
}class myrect : myshape
}
這個時候可以手動新增無參建構函式,手動呼叫有參建構函式。
class myshape
}class myrect : myshape
}
又或者,可以給父類有參建構函式新增預設值
class myshape
}class myrect : myshape
}
c 子類建構函式初始化及父類構造初始化
我們知道,構造方法是用來初始化類物件的。如果在類中沒有顯式地宣告建構函式,那麼編譯器會自動建立乙個預設的建構函式 並且這個預設的建構函式僅僅在沒有顯式地宣告建構函式的情況下才會被建立建立。1.父類沒有宣告建構函式 1 子類也沒有宣告自己的建構函式,則父類和子類均由編譯器生成預設的建構函式。2 子類中...
C 子類初始化父類的構造函式呼叫總結
我們知道,構造方法是用來初始化類物件的。如果在類中沒有顯式地宣告建構函式,那麼編譯器會自動建立乙個預設的建構函式 並且這個預設的建構函式僅僅在沒有顯式地宣告建構函式的情況下才會被建立。建構函式與父類的其它成員 成員變數和成員方法 不同,它不能被子類繼承。因此,在建立子類物件時,為了初始化從父類中繼承...
類的初始化(建構函式)
1.類成員為const型別 2.類成員為引用型別 include using namespace std class a void print val private const inti intp int j int main int argc char argv 究其因 const物件或引用只能...