close

image

image

這個'簡單'的程式就可以知道類別怎麼繼承,那根據第一張圖,我們的b就稱為基礎類別,然後b繼承了a,a稱為衍生類別,b繼承了a有什麼用處呢?b可以使用a類別的函數、變數,下面來點簡單的範例。

副程式:boo.h

image

我們可以看到b的裡面沒有東西,但是繼承了b之後就可以使用a類別的變數、函數。

主程式:boo.cpp

image

這就是繼承的基本觀念,下面我會講解一個比較'難'的程式。

image

如果對類別、建構函數不是很懂的人可以去看我之前發的文章

我們來先來看a類別,我把num的權限變成private,所以只有函數可以調用他,那我就宣告了get_num()函數,就是為了取得num變數,一個有參建構函數,第14行為外面實作a類別的建構函數。

image

b繼承a,最特別的寫法就是第27行他稱為成員初始化串列(initializer list),就是當我們在主程式建立一個b的變數時,他一定會先把a給建構出來(簡單來說我們宣告b的變數時會先呼叫a(boss)這個建構函數),如果你有兩個建構函數,記得都要加上成員函數初始化串列,如果你是使用visual studio可能不會有這個問題,第33行我不能直接寫num,所以才要用函數去取得他,如果兩個類別都有show這個函數的時候,我使用b.show()所使用的show()就是b本身的show函數,注意如果你繼承兩個類別,類別裡都有相同的函數,編譯式不會有問題的,但是到主程式中呼叫韓式的時候就會報錯,因為她不知道要用哪個函數。

image

這個執行結果就可以很清楚的知道了呼叫b時一定會呼叫a這個衍生類別,但是呼叫a就不會呼叫b這個基礎函數,因為他是單向的。

arrow
arrow
    文章標籤
    C++C C++ 程式語言 筆記
    全站熱搜
    創作者介紹
    創作者 讀書小天地 的頭像
    讀書小天地

    書籍分享天地

    讀書小天地 發表在 痞客邦 留言(0) 人氣()