前言
做爲一個程序員,遇到再多的問題都不是問題,唯一的問題是你解決了這個問題沒有
小米電面的時候被問到智能指針的問題,對於這個有點印象,往指針方向去想,但怎麼也想不起來是什麼東西。
簡介
智能指針實際上是一個類,而且還是一個模板類,由於重載了*,->這兩個運算符,使它在操作上像一個指針而已。
簡單例子
#include<memory>
#include<iostream>
#include<string>
using namespace std;
class Dog{
private:
string str;
public:
Dog(string str):str(str){
cout<<"a dog "<<str<<" is constructed"<<endl;
}
void bark(){
cout<<"Wan Wan Wan....!!!!"<<endl;
}
~Dog(){
cout<<"a dog "<<str<<" is died"<<endl;
}
};
int main(){
unique_ptr<Dog> dog(new Dog("xiaohei"));
dog->bark();
(*dog).bark();
Dog *d=new Dog("xiaobia");
}
運行結果
結果分析
unique_ptr是C++11新增的,頭文件是<memory>.
智能Dog自動去死,而沒有使用智能指針的dog顯然沒有主動去死。