[問題] 為什麼有些 class 無法直接宣告

看板C_and_CPP (C/C++)作者 (麵T)時間10年前 (2015/10/28 18:25), 編輯推噓3(306)
留言9則, 5人參與, 最新討論串1/1
在 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://www.ptt.cc/bbs/C_and_CPP/M.1446027921.A.18E.html

10/28 20:02, , 1F
Q1: 把ctor設為private並重載operator new即可
10/28 20:02, 1F

10/28 23:33, , 2F
關鍵字 : 建構子 (constructor) , 解構子 (destructor)
10/28 23:33, 2F

10/28 23:34, , 3F
Q2 : 一個 new 一定配一個 delete.
10/28 23:34, 3F

10/28 23:51, , 4F
那擁有者owner 扮演什麼角色?
10/28 23:51, 4F

10/29 10:20, , 5F
可以請一樓詳述嗎?private 建構子 連new都不能不是? 就
10/29 10:20, 5F

10/29 10:21, , 6F
算overload 能避開嗎? 總覺得是bcb自己搞的
10/29 10:21, 6F

10/29 12:58, , 7F
Overloaded operator 裡面可以呼叫 private 成員啊
10/29 12:58, 7F

10/30 09:00, , 8F
可是一寫new這字眼 compiler 直接就該說使用private了
10/30 09:00, 8F

10/30 09:01, , 9F
還沒機會走overload 的不是? 還是有範例呢?
10/30 09:01, 9F
文章代碼(AID): #1MCAAH6E (C_and_CPP)
文章代碼(AID): #1MCAAH6E (C_and_CPP)