c++指標成員與非指標成員
阿新 • • 發佈:2020-12-07
指標成員:
好處:
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