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