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;
}
相關文章
相關標籤/搜索