C++:繼承(派生)專題

1.private繼承時在子類中不可見
pretected 對於外界訪問屬性來說,等同於私有,但可以派生類中可見。
public 作用:傳承接口 間接的傳承了數據(protected)
protected 作用:傳承數據,間接封殺了對外接口
private 統殺了數據和接口

如果多級派生當中,均採用 public,直到最後一級,派生類中均可訪問基類的public,protected 成員
如果多級派生當中,均採用 private,直到最後一級,派生類中基類的所有成員均變爲不可見
如果多級派生當中,均採用 protected,直到最後一級,派生類的基類的所有成員即使可見,也均不可被類外調用

2.繼承時主要用初始化列表初始化父類

3.派生類的拷貝構造
派生類::派生類(const 派生類& another)
:基類(another),派生類新成員(another.新成員)
{
}
//子類對象可以用來初始化父類對象,Student(another)

Gaduate::Graduate(const Graduate & another)
:Student(another),salary(another.salary)
{ }

派生類中的默認拷貝構造器會調用父類中默認或自實現拷貝構造器,若派生類中自實現拷貝構造器,則必須顯式的調用父類的拷貝構造器。

4.派生類的賦值運算符重載
賦值運算符函數不是構造器,所以可以繼承
子類& 子類::operator=(const 子類& another)
{
if(this == &another)
return *this; //防止自賦值
父類::operator =(another); // 調用父類的賦值運算符重載
this->salary = another.salary;//子類成員初始化
return * this;
}

5.友元不會被繼承
所以我們可以將派生類的指針或引用強制類型轉爲基類的指針或引用。這樣可以顯示調用基類的友元函數
ostream &operator<<(ostream & out, Graduate & gra)
{
out<<(Student&)gra<<endl;
out<<gra.c<<"**"<<gra.d<<endl;
}

6.繼承語法
派生類名::派生類名(參數總表)
:基類名 1(參數表 1),基類名(參數名 2)…基類名 n(參數名 n),
內嵌子對象 1(參數表 1),內嵌子對象 2(參數表 2)…內嵌子對象 n(參數表 n)
{
派生類新增成員的初始化語句;
}

先基類,再內嵌子對象,再新增成員。
析構時是相反的順序

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章