設計 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