1. 程式人生 > 實用技巧 >c++指標成員與非指標成員

c++指標成員與非指標成員

指標成員:

好處:

  1 類佔記憶體較小

  2 可以不包含標頭檔案,使用前置宣告

  3 可以不指定具體實現,使用父類指標

壞處:

  手動管理記憶體,需要指定拷貝構造,賦值構造,解構函式

非指標成員:

 好處:

  1 不需要管記憶體

 壞處

  1 不能使用前置宣告

  2 類例項佔記憶體大

  3 只能明確實現

4 需要在構造方法裡呼叫成員變數的建構函式

三法則

有時您需要實現一個管理資源的類。(永遠不要在一個類中管理多個資源,這隻會導致痛苦。)在這種情況下,請記住以下三個規則

如果你需要明確宣告析構 拷貝構造 賦值建構函式.那麼你可能需要明確宣告這三個

五法則

c++11 增加了移動建構函式和移動賦值建構函式與以上同理

class C {
  C(const C&) = default;               // Copy constructor
  C(C&&) = default;                    // Move constructor
  C& operator=(const C&) = default;  // Copy assignment operator
  C& operator=(C&&) = default;       // Move assignment operator
  virtual ~C() { }                     // Destructor
};

結論:

一般不需要自己管理資源

不使用指標成員,就不會用到這些法則

ref:

https://stackoverflow.com/questions/8589739/pointer-vs-non-pointer-members-of-a-class

https://stackoverflow.com/questions/4172722/what-is-the-rule-of-three