37)智能指针(就是自动delete空间)
1)问题引入:
在java或者在C++中,一旦你new一个东西,那么必然有一个delete与之对应,比如:
1 int main() 2 { 3 int* p= new int(); 4 5 *p=10; 6 7 delete p; 8 9 10 return 0; 11 }
但是 我现在有一个 特别 特别智能的指针 ---名字叫 智能指针 可以 不用我们手动释放 去自己释放,那么怎么创建和使用这个智能指针呢?
其实这个智能指针就类似于 JAVA的 new原理,也是你只要创建了,就可以用,但是回收 你不用管。
2)智能指针的创建和使用
(1)智能指针存在头文件 <mrmary> 中
(2)创建和使用:
1 #include<iostream> 2 #include<memory> 3 using namespace std; 4 int main() 5 { 6 //等同于 int *p= new int(); 7 auto_ptr<int> pt(new int); 8 //这个pt后面括号里面的是 返回一个地址的东西 new int 返回一个地址 给了pt 9 //那个尖括号< > 里面的是 这个pt指针的数据类型 你是int 就是<int> 你是char 10 //就是 <char> 你是类A 就是 <A> 11 12 13 //比如 和 A a= new A(10)类似的代码是: 14 15 // auto_ptr<A> pt(new A(10)); 16 *pt=10; 17 cout<<*pt<<endl; 18 19 20 }