[問題] 請問Functor的建構/解構問題

看板C_and_CPP作者 (綠豆嘉義人)時間13年前 (2012/03/26 01:12), 編輯推噓0(0010)
留言10則, 3人參與, 最新討論串1/1
下面有一段簡單小程式是在測試Functor被產生時, 建構與解構被呼叫的狀況 我發現ctor只出現一次, 可是dtor卻出現兩次 這樣子我之後在做reference counting時可能會有問題 想請問為什麼dtor會多印一次呢 ? 程式如下: ( 測試環境為Visual Studio 2008 / WIN7) #include<iostream> class compare_class { public: void operator()() const { std::cout << "invoke functor" << std::endl; } compare_class() { std::cout << "ctor" << std::endl; } ~compare_class() { std::cout << "dtor" << std::endl; } }; template <class ComparisonFunctor> void sort(ComparisonFunctor c) { std::cout << "sort" << std::endl; } void main() { sort(compare_class()); } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 119.77.201.177 ※ 編輯: mingtai1 來自: 119.77.201.177 (03/26 01:12)

03/26 01:24, , 1F
copy ctor 也測一下吧
03/26 01:24, 1F

03/26 01:24, , 2F
比較複雜的algorithms也可能需要用到copy assignment
03/26 01:24, 2F

03/26 20:01, , 3F
functor用lambda代替會比較好嗎?
03/26 20:01, 3F
※ 編輯: mingtai1 來自: 119.77.201.177 (03/27 00:38)

03/27 00:39, , 4F
加了copy ctor,dtor次數就只剩下1次了,不過卻沒印出copy
03/27 00:39, 4F

03/27 00:40, , 5F
ctor的訊息, 很詭異. 有大大知道原因嗎 ?
03/27 00:40, 5F

03/27 00:42, , 6F
應該問說, 為什麼加了copy ctor, dtor就只會出現一次才對
03/27 00:42, 6F

03/27 00:51, , 7F
你最後的碼長怎樣?
03/27 00:51, 7F

03/27 00:56, , 8F
最後碼我再回下一篇文貼上
03/27 00:56, 8F

03/27 01:28, , 9F
你用置底文網站貼吧, 只要一個推文就夠了...
03/27 01:28, 9F

03/27 22:47, , 10F
貼上了,不好意思不太熟@@ http://codepad.org/K1EAMdJp
03/27 22:47, 10F
文章代碼(AID): #1FRr7YSx (C_and_CPP)