记得刚开始使用共享指针的时候,不理解共享指针的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; }