vector中clear和析构函数的区别

vector中clear和析构函数的功能确实类似,不同的是,clear 不会释放掉已配置的空间,dtor 会析构并释放。调用clear再析构不会有问题,调用两次析构也不会有问题。clear 不是简单的设置 size 为0,dtor 也不是简单的设置 capacity 为0。

vector中clear和析构函数的区别-Worktile社区

vector中clear和析构函数的功能确实类似,不同的是,clear 不会释放掉已配置的空间,dtor 会析构并释放。调用clear再析构不会有问题,调用两次析构也不会有问题。

clear 不是简单的设置 size 为0,dtor 也不是简单的设置 capacity 为0。

它们涉及到元素的析构与对象分配,实际影响的是vector内部存储了元素起始、结束以及可用空间的尾部的指针。

clear() 不释放数组,要调用 data[0] 至 data[size – 1] 的析构函数。

析构时调用 clear() 然后释放数组。你的 delete _pData 应该有问题,因为它会析构名列前茅个元素。

另外,析构时并不需要把成员变量设为 null 或 0。因为调用两次析构函数是不合法的,不需要考虑这个情况。

延伸阅读:

什么是析构函数?

析构函数(destructor) 与构造函数相反,当对象结束其生命周期,如对象所在的函数已调用完毕时,系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,delete会自动调用析构函数后释放内存)。

与构造函数相反,当对象结束其生命周期,如对象所在的函数已调用完毕时,系统会自动执行析构函数。以C++语言为例:析构函数名也应与类名相同,只是在函数名前面加一个位取反符~,例如~stud( ),以区别于构造函数。它不能带任何参数,也没有返回值(包括void类型)。只能有一个析构函数,不能重载。如果用户没有编写析构函数,编译系统会自动生成一个缺省的析构函数(即使自定义了析构函数,编译器也总是会为我们合成一个析构函数,并且如果自定义了析构函数,编译器在执行时会先调用自定义的析构函数再调用合成的析构函数),它也不进行任何操作。所以许多简单的类中没有用显式的析构函数。

文章标题:vector中clear和析构函数的区别,发布者:小编,转载请注明出处:https://worktile.com/kb/p/38597

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编小编认证作者
上一篇 2023年2月17日 上午2:31
下一篇 2023年2月17日 上午2:33

相关推荐

  • oa办公系统有哪些厂商

    标题:OA办公系统的主要厂商概览 OA办公系统提供了企业管理和办公自动化的解决方案,减少纸质文件流通,提高工作效率。主要厂商有1、微软(Microsoft)提供的Office 365,2、谷歌(Google)推出的G Suite,3、阿里巴巴旗下的钉钉,4、华为云WeLink平台。 Office 3…

    2024年1月11日
    51400
  • vscode为什么好

    VSCode(Visual Studio Code)之所以备受青睐,可以归结为几个关键因素:轻量级、功能强大、高度可定制、社区支持丰富、跨平台兼容性。这些特点使其不仅适合初学者入门编程,而且也能满足经验丰富的开发者的高级编程需求。其中,轻量级的特性尤为突出,它保证了VSCode在启动速度和运行效率上…

    2024年4月3日
    7100
  • oa系统在哪

    OA系统的位置取决于是物理部署还是云部署。它可能位于具体的办公环境内部的服务器上,亦或是托管在云服务提供商的数据中心内。需要与您的IT管理员或服务提供商联系,以获取具体的访问地址或登录入口。 精准定位如下: 1、若为公司内部部署,可在本地网络或专用服务器上。 2、云服务托管的情况,服务器位置不特定,…

    2024年1月16日
    19100
  • 监理公司如何管理好项目

    监理公司要管理好项目,需采取的核心策略包括:确保工程质量、控制项目成本、维护沟通协调、执行合同管理、实施进度监控、采用先进技术与方法。在这些策略中,确保工程质量尤为重要。通过严格的质量控制手段,监理公司能有效地保障工程项目的质量达到或超过预期目标,进而获得业主的信任和满意,为未来的项目合作铺平道路。…

    2024年4月10日
    5400
  • vscode为什么这么牛

    VSCode牛在其轻量级、高效率、可定制、跨平台兼容、巨大的扩展生态系统、以及微软强大的支持。这个由微软开发的源代码编辑器结合了简洁的用户界面和足够的功能性,为开发者提供了便捷的代码编写和编辑环境。高效率体现在其快速的启动时间和流畅的操作体验。可定制性则是指用户可以通过安装扩展来增强其功能,或是通过…

    2024年4月3日
    5400
  • JavaScript和ECMAScript究竟是什么关系

    JavaScript和ECMAScript的关系是:ECMAScript也是一门脚本语言,可以缩写为ES,我们可以把它看作js的标准化规范。ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现 。平常场合,这两个词是可以互换的。 一、JavaScript和ECM…

    2023年3月18日
    69300
  • 社交型知识库有哪些平台

    社交型知识库是结合社交网络和知识管理功能的在线平台,它们有效促成了信息的共享与个人间互动。目前,1、Quora、2、Stack Exchange、3、Reddit、4、Zhihu以及5、LinkedIn Learning是该领域的一些主要平台。这些平台促进了专业知识的交流,支持用户通过提问、回答、讨…

    2023年11月15日
    52900
  • 抽象类和接口的区别是什么

    抽象类和接口是面向对象编程中两个核心概念,它们都不能被实例化,但是有许多不同点:1.继承和实现的差异;2.属性的存在与否;3.访问修饰符的限制;4.继承的限制;5.功能的定义与实现。其中,抽象类可以拥有成员变量和具体方法的实现,而接口通常只定义方法的签名。 1.继承和实现的差异 抽象类是使用 ext…

    2023年7月16日
    95600
  • 什么是网站结构优化,为何重要

    本文将分析网站结构优化是一种旨在提升网站用户体验和搜索引擎友好度的重要策略,着重于网站内容的组织和内部链接的布局。有效的网站结构优化有利于提升网站的可见性和排名,关键因素包括导航的清晰度、页面的层次性、内联链接的相关性、1、2、3。通过优化确保网站易于用户导航和搜索引擎抓取,有助于提高转化率和降低跳…

    2023年11月16日
    38600
  • 项目经理应如何管理业务

    项目经理在管理业务时必须施行策略性、系统性、沟通性和灵活性的方法。关键在于建立清晰的项目目标、确保有效的团队沟通、应用项目管理工具以及灵活处理项目中出现的任何问题。在这些核心点中,建立清晰的项目目标是基础,因为它为项目团队提供了明确的方向和目标。明确的项目目标能够确保所有团队成员理解他们的角色和责任…

    2024年4月10日
    4100

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部