virtual function 宣告時機: 相同的函數名稱,但因為不同的衍生類別,而有不同的行為時,可以宣告成虛擬函數 優點: 可以根據你的類別做出函數對應的行為 使用方法: 利用base class指標指向derive class物件記憶體位置,再由指標變數呼叫base class的虛擬函數,,就會執行derive class相同函數名稱的程式碼(若不使用指標其虛擬函數與一般函數是沒有什麼分別) performance比較: 非虛擬函數,在編譯時就決定哪一個函數會被呼叫,此為static binding;虛擬函數,必須要等到程式執行時才能知道哪個函數會被呼叫,稱為dynamic binding.故虛擬函數效率會低於非虛擬函數. 應用: 把解構子宣告成虛擬函數,在回收base class 指標指向動態配置出來的derive class記憶體空間時,藉由dynamic binding,解決類別不正常解構,讓記憶體完整的釋回. ----------------------------------------------------------------------------- static data member: 1.屬於class層級的資料,所有object共享一份static data member。 2.存取static member不需要透過任何的object,在無任何object時已透過member selection operators 來存取。 3.所有的存取都會被compiler轉化為extern實體的直接參考動作 static member function: 1.只允許存取static member variable或function 2.不用宣告實體物件即可呼叫該function Public: 1.可在程式內的任何敘述存取。 2.類別的成員函數之存取等級,大多為public等級,以便供類別以外程式敘述存取屬性。 Protect: 1.可存取類別的成員函數。 2.繼承該類別之衍生類別的成員函數。 3.等級介於public和private之間 1)類別以外的敘述,protected等級的成員,跟private同等。 2)對於類別的衍生類別,protected等級的成員,相當於public的等級。 Private: 1.可以存取該類別的成員函數...