設計 C++ class
列出設計一新 class 時需要注意的問題跟與其相關的東西:
真的需要一個新 class 嗎?(我覺得這最重要)
使用既有 class 是否能達成需求?
如何產生及銷毀新 class 的 object?
與 constructor、destructor、new、new[]、delete、delete[] 有關
物件的 initialization 跟 assignment 有何區別?
與 constructor、assignment operator 的行為有關
如果以 pass by value 的方式傳遞新 class 的 object 時是什麼意思?
與 copy constructor 有關
新 class 的合法值為何?
需維護的條件、member function(如 constructor、assignment operator、setter)所做的錯誤檢查、exception、exception specification
新 class 是否繼承某個繼承架構?
base class 的 non-virtual 及 virtual function
virtual distructor
新 class 需要那些轉型?
轉型 function
那些 operator、function 對此 class 來說是合法的?
牽涉到要宣告那些 function?是否為 member?
不想使用哪些 compiler 會自動生成的 function(如 constructor)?
如果不使用,將它宣告成 private。
誰可以使用新 class 的 memeber?
public、protected、private、friend
新 class 的 undeclared interface 是?
這個 class 需要多 general?
class template
Ref
- 《Effective C++》item 19