公共繼承,相當於屬於關係。如class b:public a,表示b就是a,a做到的,b也能做到。
class a{};class b:
public
a{};
a a;
b b;
a=b;//
錯誤,因為a不一定是b
b=a;//
正確,b就是a
public繼承下,會出現名字覆蓋:b與a若有同名函式,則a中的該函式將被覆蓋,包括a中該函式的過載函式。
關於虛函式
含有純虛函式如: virtual void fun()=0; 的類是抽象類,我們不能建立抽象類的物件。若a中有純虛函式,則a a=new a是錯的,而a a=new b才是正確的。
純虛函式:
派生類中必須重新宣告該函式。(宣告乙個純虛函式的目的是為了讓派生類只繼承介面)
純虛函式的實現,需要申請才能使用,如下所示
class a;void
a::fun()
class b
};class c
;void
c::fun()
非純虛函式:
派生類會繼承該函式的宣告與實現,可自己實現以覆蓋。不安全的原因是:派生類忘記自定義繼承過來的函式時,會使用預設的實現(即基類的實現)。而此 預設的函式實現可能不適合此派生類。
非虛函式:
抽象類(只能是抽象類)會強制派生類繼承該類的非虛函式,即抽象類的非虛函式將會覆蓋所有派生類的同名函式,此做法剛好與非抽象類的繼承相反。
總結:
在公共繼承下,純虛函式、非純虛函式和非虛函式在抽象類的繼承當中的作用分別是:只繼承介面、繼承介面與預設實現、繼承介面及強制實現。
c 物件導向筆記
繼承形式如下 class derived class access specifier base class當乙個類派生自基類,該基類可以被繼承為 public protected 或 private 幾種型別。繼承型別是通過上面講解的訪問修飾符 access specifier 來指定的。我們幾乎...
C 筆記 物件導向
c 物件導向的三大特性 封裝 繼承和多型。封裝 將資料和方法寫進類中,避免外界干擾和保護資料,使得 模組化。繼承 乙個類 派生類 繼承另乙個類 基類 的所有屬性和方法,同時它還可以有另乙個類不具備的方法和屬性 可拓展 多型 c 多型性是通過虛函式來實現的,虛函式允許子類重新定義成員函式 覆蓋或者稱為...
C 中的物件導向
物件導向是一種設計思想,其實就是將一些功能進行封裝,使得這個功能有乙個可以使用的實體。比方說狗就可以當成乙個物件,其完成的功能是叫。在 c 中物件導向也是一樣的,其也有三大屬性 封裝,繼承,多型。下面就來看看是如何在 c 中實現的。1 首先先說封裝 還是以狗叫為例,其功能為叫,按照一般的寫法就會在主...