c++ 共享指针:make_shared

记得刚开始使用共享指针的时候,不理解共享指针的reset(), std::make_shared<T>(args....)和构造函数: 实际上本质上是同样的,都是将一个指针交给共享指针对象管理,只是std::make_shared<T>(args...)在自身构造函数中,利用传输的参数构造一个对象指针给生成的共享指针对象,即,在构造共享指针的同时分配关联的指针ios

#include <iostream>
#include <memory>
using namespace std;

// Ptr: 普通共享指针
// ConstPtr: 不可修改内容的共享指针
// PtrConst: 不可修改指针的共享指针,内容能够修改
// ConstPtrConst: 只能初始化的指针,不能作任何的修改动做
#define SHARED_PTR_DEFINE(X) \
    public: \
    typedef std::shared_ptr<X> Ptr;  \
    typedef std::shared_ptr<const X> ConstPtr;  \
    typedef const std::shared_ptr<X> PtrConst; \
    typedef const std::shared_ptr<const X> ConstPtrConst;


class testA
{
    SHARED_PTR_DEFINE(testA);
public:
    void print()
    {
        std::cout << "testA ==> " << std::endl;
    }
};

int main()
{
    cout << "Hello World!" << endl;

    testA::Ptr ptr(new testA);
    
    testA::Ptr ptr2 = std::make_shared<testA>();
    return 0;
}
相关文章
相关标签/搜索