当前位置:   article > 正文

c/c++ 数组的智能指针 使用

c++智能指针 数组

数组的智能指针 使用

数组的智能指针的限制:

1,unique_ptr的数组智能指针,没有*和->操作,但支持下标操作[]
2,shared_ptr的数组智能指针,有*和->操作,但不支持下标操作[],只能通过get()去访问数组的元素。
3,shared_ptr的数组智能指针,必须要自定义deleter
小例子
  1. #include <iostream>
  2. #include <memory>
  3. #include <vector>
  4. using namespace std;
  5. class test{
  6. public:
  7. explicit test(int d = 0) : data(d){cout << "new" << data << endl;}
  8. ~test(){cout << "del" << data << endl;}
  9. void fun(){cout << data << endl;}
  10. public:
  11. int data;
  12. };
  13. int main(){
  14. //test* t = new test[2];
  15. unique_ptr<test[]> up(new test[2]);
  16. up[0].data = 1;
  17. up[0].fun();
  18. up[1].fun();
  19. shared_ptr<test> sp(new test[2], [](test* p){delete [] p;});
  20. (sp.get())->data = 2;//数组的第一个元素
  21. sp->data = 10;
  22. test& st = *sp;
  23. st.data = 20;
  24. (sp.get() + 1)->data = 3;//数组的第二个元素
  25. return 0;
  26. }

github完整代码

c/c++ 学习互助QQ群:877684253

1414315-20180929201431556-93901297.jpg

本人微信:xiaoshitou5854

转载于:https://www.cnblogs.com/xiaoshiwang/p/9726511.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/781599
推荐阅读
相关标签
  

闽ICP备14008679号