今天本身想明白了。 sp<A> spa = new A(); 與 A* a = new A(); 的區別了。 sp<A> spa = new A(); 執行的流程是: 1) A* a = new A(); 2) sp<A> spa = a; 步驟2的精髓在與, sp<A> 是一個模板類, 它存儲在區棧, 因此函數結束以後, 它會主動調用析構函數。 而A* 是一個指針, 它指向的內存分配在堆區, 函數結束以後, 它不會主動調用析構函數。函數