21:知识点1:一个类无论是类模版还是普通类,都可以将其成员函数定义为模版,称之为成员模版,但是成员模版不能是虚函数
debug.h
#ifndef DEBUG_H
#define DEBUG_H
class Debugdelete
{
public:
Debugdelete(ostream &s = cerr):os(s){}//构造函数
template <typename T> void operator()(T *p) const//const表示该函数不会修改类的成员数据
{
os<<"deleting..."<<endl;//额外信息,我们的删除器可以做用于任何版本类型
delete p;//接受一个指针作为参数,并且删除该指针
}
private:
ostream &os;//私有成员为一个输出流
};
#endif DEBUG_H
main.cpp

这篇博客解答了C++ Primer第五版第十六章的习题,涉及成员模板、删除器的重载、模板实例化、智能指针等概念。讨论了成员模板不能是虚函数,如何对删除器进行类型重载,模板延迟实例化以及extern模板的作用。此外,还解释了unique_ptr和shared_ptr的删除器绑定方式及其区别。
订阅专栏 解锁全文
5764





