#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(); }