物聯網/嵌入式工程師
重磅升級:新增硬件電路設計與實戰,讓你軟硬通吃,同級PK無敵!行業風口、政策傾斜,新晉熱門高薪不內卷!0基礎一站式就業完整路徑,搶占先發優勢!
class Coder : public Staff
{
};
可以看到,Coder 在繼承 Staff 的時候,有一個 public 關鍵字,來看看這個 public的作用。
我們之前已經講過,可以為成員變量和成員函數設置權限修飾符來設置權限。但是這在繼承的時候就會產生一個問題:子類中是否要保持對父類成員的權限,而 C++ 將這個選擇權交給了程序員。
在 C++ 中,對父類成員的權限,子類中可以進行重新的定義,這個定義就是通過繼承時候寫的public 來實現的。
可以看到,我們在上述程序中使用了 public 修飾符,那么父類中的成員函數和成員變量將會保持父類的權限。這種是使用最廣泛的繼承方式,我們把它叫做公有繼承。
接下來,再來看一個重要的概念,多態。
我們來嘗試做這樣一件事,我們在子類和父類中都定義一個同名函數
class Base
{
public:
void func(){
printf("this is Base\n");
}
}
class Child : public Base
{
public:
void func(){
printf("this is Child\n");
}
}
嘗試調用一下,為了方便,我們采用分配到堆內存的方式創建一個子類對象,然后調用 func 函數:
int main(int argc,char **argv)
{
Child * obj = new Child();
obj->func();
delete obj;
return 0;
}
運行程序,我們發現這個 func 是子類的 func。我們再對程序做一點修改:
int main(int argc,char **argv)
{
Child * obj = new Child();
Base * baseobj = (Base *)obj;
baseobj->func();
delete obj;
return 0;
}
我們把這個 Child 指針強轉成 Base 指針(對象的轉換我們在下一個小結詳細講解),這時候,再來運行一下。我們發現,這一次運行的卻是父類的 func 函數。
請驗證,完成請求
由于請求次數過多,請先驗證,完成再次請求
打開微信掃碼自動綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報