类的成员函数我碰巧在这个职位上堆栈溢出跌倒: make shared_ptr not use delete调用定制删除共享指针
,我必须从尼古拉M. Josuttis拥有C++标准库的书相关的问题。下面是代码从书以下的一段:
#include <string>
#include <fstream> // for ofstream
#include <memory> // for shared_ptr
#include <cstdio> // for remove()
class FileDeleter
{
private:
std::string filename;
public:
FileDeleter (const std::string& fn)
: filename(fn) {
}
void operator() (std::ofstream* fp) {
delete fp; // close file
std::remove(filename.c_str()); // delete file
}
};
int main()
{
// create and open temporary file:
std::shared_ptr<std::ofstream> fp(new std::ofstream("tmpfile.txt"),
FileDeleter("tmpfile.txt"));
//...
}
据我了解,删除器功能的签名应该是以下几点:
void Deleter(T* p)
所以在上面的例子中,它是如何deleter函数(指定为FileDeleter(“tmpfile.txt”))看起来是类的构造函数调用,而不是具有上述格式的函数?如何在这里销毁共享指针实际上调用deleter函数?
_“deleteter函数是如何在这里破坏共享指针时被调用的?”_在'shared_ptr'的析构函数中? – 2014-10-08 00:01:11
查找函数。 – programmerjake 2014-10-08 08:53:40
@programmerjake:我知道仿函数。但是我仍然不清楚这就是为什么我问这个问题。 – avish 2014-10-08 12:08:43