作者mingtai1 (綠豆嘉義人)
看板C_and_CPP
標題[問題] 請問Functor的建構/解構問題
時間Mon Mar 26 01:11:58 2012
下面有一段簡單小程式是在測試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)
→ loveme00835:copy ctor 也測一下吧 03/26 01:24
→ loveme00835:比較複雜的algorithms也可能需要用到copy assignment 03/26 01:24
→ diabloevagto:functor用lambda代替會比較好嗎? 03/26 20:01
※ 編輯: mingtai1 來自: 119.77.201.177 (03/27 00:38)
→ mingtai1:加了copy ctor,dtor次數就只剩下1次了,不過卻沒印出copy 03/27 00:39
→ mingtai1:ctor的訊息, 很詭異. 有大大知道原因嗎 ? 03/27 00:40
→ mingtai1:應該問說, 為什麼加了copy ctor, dtor就只會出現一次才對 03/27 00:42
→ loveme00835:你最後的碼長怎樣? 03/27 00:51
→ mingtai1:最後碼我再回下一篇文貼上 03/27 00:56
→ loveme00835:你用置底文網站貼吧, 只要一個推文就夠了... 03/27 01:28