看板 C_and_CPP 關於我們 聯絡資訊
最近再TRACE別人寫的程式,有些技巧不是很懂 Q1. 若某個class有成員設為protected或是destructor設為virtual, 表示這個class是希望用來被繼承的??? Q2. 若某個class把constructor設為private,通常會有另一個public的member function 用來產生並回傳該class的instance,這麼做的目的是??? 用來實做singleton嗎??? Q3. 若某個class把destructor設為private,通常會另外設有friend class, 透過friend class替該class做cleanup的動作??? 這麼做有什麼好處呢??? Q4. 有些class會把copy constructor和assignment設為private 是為了不想讓該class的instance做assign的動作, 在甚麼樣的情況之下,我們會不希望class的instance assign給其他instance呢??? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.240.146.135
purincess:Q4 因為他shallow copy會爛掉 然後作者懶得寫deep copy 12/22 22:18
purincess:(不負責任回答) 12/22 22:18
angleevil:Q4有些功能並不需要提供給使用者,只要設計者知道怎麼操 12/22 22:37
angleevil:做就好.例如一些編譯器最佳化的作法,設計者並不需要告 12/22 22:37
angleevil:知使用者,他到底調整了什麼加速. 12/22 22:38
angleevil:q1:protected member是希望讓derived class可以直接使用 12/22 22:44
angleevil:base class的member,virtual destructor比較是用在 12/22 22:45
angleevil:指標上. 12/22 22:45
Chikei:Q1:C++FAQ Lite [20.7] Q2: [10.8] Q3: 物件的lifecycle需 12/23 00:57
Chikei:要其他物件來管理 Q4 物件帶的資料需要唯一性或是根本不能 12/23 00:59
Chikei:被複製,像系統資源之類的 12/23 00:59