shared_ptr 类 类似 vector,智能指针也是模板。因此,当我们创建一个智能指针时,必须提供额外的信息 —— 指针可以指向的类型。与 vector 一样,我们在尖...
既然shared_ptr并不担心Deleter带来的额外开销,同时把Deleter作为模板类型的一部分还会导致使用上变复杂,那么它只把Deleter作为构造函数的类型就是显然的事情了。 而unique_ptr采用了“空基类”的技巧,将Deleter作为基类,在用户不指定Deleter时根本不占空间,第一条pass;用户不指定Deleter时默认的Deleter会是default_delete,...
既然shared_ptr并不担心Deleter带来的额外开销,同时把Deleter作为模板类型的一部分还会导致使用上变复杂,那么它只把Deleter作为构造函数的类型就是显然的事情了。 而unique_ptr采用了“空基类”的技巧,将Deleter作为基类,在用户不指定Deleter时根本不占空间,第一条pass;用户不指定Deleter时默认的Deleter会是default_delete,...
1 下面是一个不适合使用auto_ptr的示例: #include<iostream>#include<string>#include<memory>usingnamespacestd;intmain(){auto_ptr<string>films[5]={auto_ptr<string>(newstring("one")),auto_ptr<string>(newstring("two")),auto_ptr<string>(newstring("three")),auto_ptr<string>(newstring("four"...
<memory>头文件引入了共享型智能指针模板类shared_ptr。 🚩第6 ~ 21行:为了演示智能指针所管理的动态对象的生命周期,我们设计了Fish类。Fish的构造及析构函数都会向控制台报告构造或析构的消息。 🚩第23 ~ 25行:sayHello()函数接受一个智能指针对象f为参数,然后对f使用指向操作符访问Fish对象的sayHello()方法...