C++ 自动指针 共享指针

Posted 阿汤的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 自动指针 共享指针相关的知识,希望对你有一定的参考价值。

#include <iostream>
#include <string>
#include <memory>
class Item
{
public:
    Item(std::string str):name(str){}
    ~Item(){std::cout<< name << " unitialize!" <<std::endl;}
    void dump(){std::cout<< "I‘am " << name <<std::endl;}
    static Item *CreateItem(std::string str)
    {
        Item *pItem = new Item(str);
        return pItem;
    }
private:
    std::string name;
};

int main()
{
    Item *pi = Item::CreateItem("common ptr");
    pi->dump();
    delete pi;

    std::auto_ptr<Item> ap1(Item::CreateItem("auto ptr"));
    ap1.get()->dump();
    std::auto_ptr<Item> ap2 = ap1;
    ap2.get()->dump();        // 此时 auto ptr 对象已经不属于 ap1

    std::shared_ptr<Item> sp1(Item::CreateItem("shared ptr"));
    sp1.get()->dump();
    std::shared_ptr<Item> sp2 = sp1;
    sp2.get()->dump();
    return 0;
}

 

以上是关于C++ 自动指针 共享指针的主要内容,如果未能解决你的问题,请参考以下文章

linux C++共享指针(std::shared_ptrstd::make_shared)共享对象,reset()重置共享指针,use_count()查看引用计数

linux C++共享指针(std::shared_ptrstd::make_shared)共享对象,reset()重置共享指针,use_count()查看引用计数

Microsoft Visual C++ 中的共享指针调试

C++ - 指针和“智能指针”

为啥 C++ 共享指针的行为不像迭代器的标准指针?

异常安全 C++ 共享指针