#include <iostream> #include <memory> using namespace std; class A{ public: A(){ cout << "A" << endl; q = new int(2); } ~A(){ cout << "~A" << endl; delete q; } void p() { cout << *q << endl; } int *q; }; int main() { A *a;//声明一个普通指针 { //创建一个智能指针 shared_ptr<A> p(new A()); //返回给普通指针 a = p.get(); //打印值为2 a->p(); //出作用域,智能指针释放,调用A析构函数 } //打印值为0 a->p(); }
原文:https://www.cnblogs.com/boluo007/p/14719639.html