作者noodleT (麵T)
看板C_and_CPP
標題[問題] 為什麼有些 class 無法直接宣告
時間Wed Oct 28 18:25:19 2015
在 BCB 裡面,使用者無法直接宣告:
TButton button;
// ERROR E2459 VCL style classes must
// be constructed using operator new
只能宣告成:
TButton *button;
button = new TButton(this);// 賦予 Owner
Q1.為什麼有些 class 無法直接宣告?
這種 class 是不是有特殊名稱?好處?
Q2.設定 Owner 後,是不是就不需要 delete
來和 new 配對?
當我 this->Close() 時自然就會消滅 button 了嗎?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.13.91.15
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1446027921.A.18E.html
1F:推 bibo9901: Q1: 把ctor設為private並重載operator new即可 10/28 20:02
2F:→ EdisonX: 關鍵字 : 建構子 (constructor) , 解構子 (destructor) 10/28 23:33
3F:→ EdisonX: Q2 : 一個 new 一定配一個 delete. 10/28 23:34
4F:→ noodleT: 那擁有者owner 扮演什麼角色? 10/28 23:51
5F:推 lovejomi: 可以請一樓詳述嗎?private 建構子 連new都不能不是? 就 10/29 10:20
6F:→ lovejomi: 算overload 能避開嗎? 總覺得是bcb自己搞的 10/29 10:21
7F:→ uranusjr: Overloaded operator 裡面可以呼叫 private 成員啊 10/29 12:58
8F:推 lovejomi: 可是一寫new這字眼 compiler 直接就該說使用private了 10/30 09:00
9F:→ lovejomi: 還沒機會走overload 的不是? 還是有範例呢? 10/30 09:01