• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++中智能指针如何设计和使用

C++中智能指针如何设计和使用

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++智能指针,c++ 函数指针,c++this指针,c++类指针,c++指针等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
     智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。每次创建类的新对象时,初始化指针并将引用计数置为1;当对象作为另一对象的副本而创建时,拷贝构造函数拷贝指针并增加与之相应的引用计数;对一个对象进行赋值时,赋值操作符减少左操作数所指对象的引用计数(如果引用计数为减至0,则删除对象),并增加右操作数所指对象的引用计数;调用析构函数时,构造函数减少引用计数(如果引用计数减至0,则删除基础对象)。
    智能指针就是模拟指针动作的类。所有的智能指针都会重载 -> 和 * 操作符。智能指针还有许多其他功能,比较有用的是自动销毁。这主要是利用栈对象的有限作用域以及临时对象(有限作用域实现)析构函数释放内存。当然,智能指针还不止这些,还包括复制时可以修改源对象等。智能指针根据需求不同,设计也不同(写时复制,赋值即释放对象拥有权限、引用计数等,控制权转移等)。auto_ptr 即是一种常见的智能指针。
     智能指针通常用类模板实现:
HasPtr& HasPtr::operator = (const HasPtr &rhs) 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++中this指针用法详解及实例
  • 关于c++ 智能指针及 循环引用的问题
  • C++智能指针读书笔记
  • 剖析C++编程当中指针作为函数参数的用法
  • 深入解读C++中的指针变量
  • C++基础入门教程(九):函数指针之回调
  • C++基础入门教程(八):函数指针
  • C++普通函数指针与成员函数指针实例解析
  • c++回调之利用函数指针示例
  • C++中的对象指针总结

相关文章

  • 2017-05-28C++并查集亲戚(Relations)算法实例
  • 2017-05-28C语言之实现字符串小写变大写的实例
  • 2017-05-28深入理解C++的对象模型
  • 2017-05-28MFC设置对话框焦点的方法简述
  • 2017-05-28C++多文件变量解析
  • 2017-05-28C语言单链队列的表示与实现实例详解
  • 2017-05-28Microsoft Visual C++ 程序的部署方法
  • 2017-05-28数据结构 数组顺序存储详细介绍
  • 2017-05-28C++中关于[]静态数组和new分配的动态数组的区别分析
  • 2017-05-28用代码和UML图化解设计模式之桥接模式的深入分析

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C语言中变量与其内存地址对应的入门知识简单讲解
    • 一些语言的按行读取文件的代码实现小结
    • do...while(0)的妙用详细解析
    • C++编程中将引用类型作为函数参数的方法指南
    • C++空类及没有成员变量的类的大小实例分析
    • VC++ 获取系统时间的方法汇总
    • C语言编程中对目录进行基本的打开关闭和读取操作详解
    • 成员初始化列表与构造函数体中的区别详细解析
    • C++中overload,override,overwrite的区别详细解析
    • C++中typedef 及其与struct的结合使用

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有