1. 泛型指针
泛型指针有多种含义。
(1) 指void*指针,可以指向任意数据类型,因此具有“泛型”含义。
(2) 指具有指针特性的泛型数据结构,包含泛型的迭代器、智能指针等。
广义的迭代器是一种不透明指针,能够实现遍历访问操作。通常所说的迭代器是指狭义的迭代器,即基于C++的STL中基于泛型的iterator_traits实现的类的实例。
总体来说,泛型指针和迭代器是两个不同的概念,其中的交集则是通常提到的迭代器类。2. 原生指针就是普通指针,与它相对的是使用起来行为上象指针,但却不是指针。
说“原生”是指“最简朴最基本的那一种”。因为现在很多东西都抽象化理论化了,所以“以前的那种最简朴最基本的指针”只是一个抽象概念(比如iterator)的表现形式之一。3. 智能指针是C++里面的概念:由于 C++ 语言没有自动内存回收机制,程序员每次得自己处理内存相关问题,但用智能指针便可以有效缓解这类问题。
引入智能指针可以防止出现悬垂指针的情况
一般是把指针封装到一个称之为智能指针类中,这个类中另外还封装了一个使用计数器,对指针的复制等操作将导致该计数器的值加1,对指针的delete操作则会减1,值为0时,指针为NULL

总结:

在大型项目中或者代码结构比较复杂的时候,智能指针的优越性很是明显,如果使用原生指针,很有可能忘记delete或者错误的delete导致内存泄漏,各种不好定位的问题。

泛型指针,原生指针和智能指针相关推荐

  1. C++智能指针使用指南 part2:智能指针本身的方法以及使用建议

    目录 往期文章 智能指针本身的方法 对于unique_ptr 对于shared_ptr 对于weak_ptr 使用建议 1.使用工厂函数而非new构造对象 2.在类内部调用其他类的方法 3.在某类内部 ...

  2. 【C++ 语言】智能指针 引入 ( 内存泄漏 | 智能指针简介 | 简单示例 )

    文章目录 I . 智能指针 引入 II . 智能指针 简介 III . 智能指针 简单示例 I . 智能指针 引入 1 . 示例前提 : 定义一个 Student 类 , 之后将该类对象作为智能指针指 ...

  3. C++智能指针(一)智能指针的简单介绍

    https://blog.csdn.net/nou_camp/article/details/70176949 C++智能指针  在正式了解智能指针前先看一下下面的一段代码 #include<i ...

  4. c语言智能指针是什么,C++ 智能指针深入解析

    1. 为什么需要智能指针?简单的说,智能指针是为了实现类似于Java中的垃圾回收机制.Java的垃圾回收机制使程序员从繁杂的内存管理任务中彻底的解脱出来,在申请使用一块内存区域之后,无需去关注应该何时 ...

  5. 智能指针(一)—— 智能指针的底层原理(RAII特性)

    我们使用 new关键字 或者 malloc函数 开辟一块空间时,因为这块空间是在堆上开辟的,如果不手动释放,即便出了作用域,这块空间也依然存在,这个时候就会造成内存泄漏. 为了保证资源的释放,我们可以 ...

  6. Android 智能指针 视频,Android系统智能指针中轻量级指针

    lp.sp.wp在Android Native层中被大量使用,所以非常有必要学习它们的实现原理.lp是Light Pointer的缩写,表示轻量级指针,sp是Strong Pointer的缩写,表示强 ...

  7. android wp指针使用方法,Android智能指针RefBase、sp、wp解析

    [TOC] 在Android系统中,Native层的代码基本都是C++写的,C++跟Java不一样,C++没有垃圾回收机制,C++代码中难于管理new出来对象的释放,稍有不慎就造成内存泄漏.针对此问题 ...

  8. 指针中的战斗机---智能指针!!!

    指针是C语言中的精髓,智能指针是C++中的王炸! 温故知新,可以为师.在开启智能指针学习篇章前,先来探望老朋友-C语言中的精髓-指针.指针的本质是变量,何为变量,变量就是用特定的数据类型做的moonc ...

  9. 智能指针的释放_手把手教你实现智能指针

    一. 为什么使用智能指针 C++的内存管理是让很多人头疼的事,因为C++语言中没有垃圾回收机制,当我们通过new语句动态申请堆空间时,用完这个堆空间时就得用delete语句释放申请的堆空间,不然就会导 ...

  10. 智能指针——auto_ptr

    1. 开篇 C++里面的四个智能指针:auto_ptr.unique_ptr.shared_ptr.weak_ptr,其中后三个是C++11支持,而这个auto_ptr已经被C++11弃用.但auto ...

最新文章

  1. 利用 socket 获取 tcp 包并解析的问题。
  2. python1000个常用代码-30个Python常用极简代码,拿走就用
  3. MS SQL基础:注释符、运算符与通配符
  4. ZJOI2013 防守战线
  5. 用SparseArray代替HashMap
  6. Ubuntu 16.04网速慢解决方法
  7. Codeforces Round #610 (Div. 2) D. Enchanted Artifact 交互 + 思维
  8. jsp循环输出表格_「翻译」JS可视化学习之七:Promise、事件循环和异步2
  9. android sdk与adt版本,eclipse中sdk与adt版本不兼容该怎么解决? 三种方法帮你搞定
  10. JAVA蓝桥杯:杨辉三角形
  11. 使用JavaScript将小写金额转化为大写金额的两种常见方法
  12. 服务器改无线路由器怎么设置,怎么把旧路由器改装成中继器
  13. 一、用例图、功能模块图、ER图之间的区别和联系
  14. 郑大计算机专业英语01章,郑州大学远程教育《大学英语II》第01章在线测试
  15. “工业互联网+安全生产”,提升工业企业安全水平
  16. 信捷plc485通信上位机_三菱FX3U编程口通信上位机QT实现
  17. SCSA❀基础信息安全概述
  18. 浅谈虚拟化软件再防泄密领域的表现如何
  19. 产品经理-能力、技能要求
  20. 大脑和小脑——规划和执行

热门文章

  1. 楼道游戏 c语言,C语言基础题!
  2. Tally项目笔记001
  3. widnows监控linux 内存,在windows下监控linux的cpu和内存
  4. sql 语句 查询结果赋值变量_RationalDMIS 7.1 变量赋值 ASSIGN语句
  5. html中怎么加入动态图片,视频加动态水印 怎么在视频画面中添加一个gif动态图片水印...
  6. 内蒙古电大计算机考试成绩查询成绩查询,中考查分系统
  7. 2018初中计算机考试知识点,[2018年最新整理]全国计算机一级考试MS_Office知识点.docx...
  8. Oracle11g exp 1445,oracle11g 导出表报EXP-00011:table不存在。
  9. java删除指定文件后重新建立文件系统_java file 操作之创建、删除文件及文件夹...
  10. 威纶通触摸屏与仪表通讯_用博途建立西门子触摸屏和S7300PLC的通讯