C++智能指針淺析

前言

做爲一個程序員,遇到再多的問題都不是問題,唯一的問題是你解決了這個問題沒有

小米電面的時候被問到智能指針的問題,對於這個有點印象,往指針方向去想,但怎麼也想不起來是什麼東西。

簡介

智能指針實際上是一個類,而且還是一個模板類,由於重載了*,->這兩個運算符,使它在操作上像一個指針而已。


簡單例子

#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顯然沒有主動去死。


發佈了37 篇原創文章 · 獲贊 7 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章