#include<iostream>
#include<algorithm>
#include<vector>
#include<memory>
using namespace std;
class Widget
{
public:
Widget(int _id):id(_id){}
void SayHello()
{
cout<<"my id:"<<id<<endl;
}
~Widget(){};
private:
int id;
};
void CallSay(const auto_ptr<Widget>& wid_ptr)
{
auto_ptr<Widget> *p = (auto_ptr<Widget> *)(operator new(sizeof(auto_ptr<Widget>))); // 分配内存空间
new (p) auto_ptr<Widget>(wid_ptr);//auto_ptr<Widget>的构造函数要求参数是非const的,但wid_ptr是const的,从const转换为非const会产生编译错误。
}
int main()
{
auto_ptr<Widget> wid1(new Widget(1));
CallSay(wid1);
}
auto_ptr预防作为STL容器元素的实现。
最新推荐文章于 2021-12-19 11:00:56 发布