本週學習真正的面向對象程序開發,編程
主要就是編寫幾個有關係(is-a)的類,而後編程的時候針對基類的指針和引用編程。設計模式
其實,C++在這裏(指面向對象編程)有一些慣用法:函數
1. 基類析構函數必爲虛函數學習
2. 基類應該要有虛函數(除了虛析函數外的虛函數),不然設計是有問題的。設計
3. C++中有一個派別認爲虛函數(除了虛析函數外的虛函數 ) 都應該是private的,指針
這種思想本質上是將本來public的虛函數都「包裹」了一層非虛函數,非虛函數對象
調用私有虛函數也就是模板方法設計模式。我以爲明白原理便可,每一個函數都內存
這樣設計從開發效率上說過低了。開發
4. 其實C++搞面向對象的的最大短板就在於只能用指針(引用其實也同樣)表示內存管理
一個對象族類。然而原生指針是不會本身作內存管理的,因此一堆的內存泄漏
問題隨之而來。解決之道是std::shared_ptr<>,因此在這裏智能指針的使用時至關
重要的,設計模式中C++也不該該直接用原生指針,也應該用std::shared_ptr<>。
5. 最後,我我的以爲若是用面向對象的設計,類族大部分應該是不可拷貝的,實在
要拷貝也應該搞個「虛拷貝函數」 virtual Base* copy();