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");
}


运行结果

C++智能指针浅析_第1张图片

结果分析

unique_ptr是C++11新增的,头文件是<memory>.

智能Dog自动去死,而没有使用智能指针的dog显然没有主动去死。


你可能感兴趣的:(C++,指针,智能指针,C++11)