本週仍然是基本的class設計,只是內含指針(資源)函數
對於這種class須要用構造/析構函數作RAII。而且要處理該class的spa
複製控制(拷貝構造和operator=)要麼禁止複製,要麼深拷貝,要麼設計
引用計數等等。。。用Big Three來管理資源實現「自動」的內存管理是很指針
好的。code
其實,把這個概念通常化,能夠把指針抽象成一個class,實現本身的blog
資源管理,成爲智能指針。爲何有了shared_ptr,等智能指針還要本身寫內存
智能指針(或者叫句柄?)由於咱們有本身的需求啊,每一個程序都有本身資源
不同凡響的地方,好比寫時複製啊,析構時用一些特殊的方式釋放資源啊內存管理
等等。編譯
吐槽一下做業的題目,能出得用心一些嗎?爲了讓類有一個指針數據,
直接把Point類型的數據成員變成Point*的指針成員,能不能稍微含蓄一些?
好比你用Pimp手法寫成:
class Rectangle { public: //your code private: struct Rectangle_Impl; Rectangle_Impl* pImpl; };
這樣不是也含有指針成員了嗎?並且還使class的界面和實現完全分離,大大下降了文件間的編譯依賴性。