get_deleter
描述 (Description)
它返回一个指向sp拥有的删除器的指针。
声明 (Declaration)
以下是std :: get_deleter的声明。
template <class D, class T>
D* get_deleter (const shared_ptr<T>& sp) noexcept;
C++11
template <class D, class T>
D* get_deleter (const shared_ptr<T>& sp) noexcept;
参数 (Parameters)
sp - 它是一个共享指针。
返回值 (Return Value)
它返回一个指向sp拥有的删除器的指针。
异常 (Exceptions)
noexcep - 它不会抛出任何异常。
例子 (Example)
在下面的例子中解释了std :: get_deleter。
#include <iostream>
#include <memory>
struct D {
void operator()(int* p) {
std::cout << "[deleter called]\n";
delete[] p;
}
};
int main () {
std::shared_ptr<int> foo (new int[10],D());
int * bar = new int[20];
(*std::get_deleter<D>(foo))(bar);
return 0;
}
让我们编译并运行上面的程序,这将产生以下结果 -
[deleter called]
[deleter called]