[問題] 請問Functor的建構/解構問題
下面有一段簡單小程式是在測試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
03/26 01:24, 1F
→
03/26 01:24, , 2F
03/26 01:24, 2F
→
03/26 20:01, , 3F
03/26 20:01, 3F
※ 編輯: mingtai1 來自: 119.77.201.177 (03/27 00:38)
→
03/27 00:39, , 4F
03/27 00:39, 4F
→
03/27 00:40, , 5F
03/27 00:40, 5F
→
03/27 00:42, , 6F
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
03/27 22:47, 10F