unique_ptr

来源:互联网 发布:淘宝网黑盘羊沉香好吗 编辑:程序博客网 时间:2024/05/16 01:29
#include <iostream>#include <string>#include <vector>#include <memory>using namespace std;class Test{public:    Test() { cout << "Test" << endl;}    ~Test() { cout << "~Test" << endl;}};int main(int argc, const char *argv[]){    unique_ptr<Test> ptr(new Test);    //unique_ptr<Test> ptr2(ptr); //没有拷贝构造    //unique_ptr<Test> ptr2;    //ptr2 = ptr;    unique_ptr<Test> ptr2(std::move(ptr));    unique_ptr<Test> ptr3;    ptr3 = std::move(ptr2);    return 0;}
#include <iostream>#include <boost/scoped_ptr.hpp>using namespace std;using namespace boost;class Test{public:    Test() { cout << "Test" << endl;}    ~Test() { cout << "~Test" << endl;}};int main(int argc, char const *argv[]){    scoped_ptr<Test> ptr(new Test);    return 0;}

#include <iostream>#include <memory>#include <vector>using namespace std;class Test{public:    Test() { cout << "Test" << endl;}    ~Test() { cout << "~Test" << endl;}    Test(Test &&t) { cout << "move" << endl; }    Test &operator=(Test &&t)    {    }private:    Test(const Test &);    void operator=(const Test &);};int main(int argc, char const *argv[]){    vector<Test> coll;    coll.push_back(Test());    return 0;}

#include <iostream>#include <memory>#include <vector>using namespace std;class Test{public:    Test() { cout << "Test" << endl;}    ~Test() { cout << "~Test" << endl;}private:    Test(const Test &);    void operator=(const Test &);};int main(int argc, char const *argv[]){    vector<unique_ptr<Test> > coll;    coll.push_back(unique_ptr<Test>(new Test));    return 0;}


0 0
原创粉丝点击