C++学习笔记:为什么就需要构造函数和析构函数?_为什么要引入构造函数和析构函数-程序员宅基地

技术标签: 语言学习  c++  编程语言  

学习朱老师C++课程、

第一,把它可以看做对象的初始化式

           对象和初始化有啥区别呢?在面向对象编程里面所谓的对象,可以等同对比为非面向对象编程里的变量。在非面向对象里的变量的C语言里面,我们都是定义变量,变量是怎么初始化的?就是在定义变量的时候给它赋值,初始化。不能定义对象,对象的初始化,就是要靠构造函数。

第二,构造函数还能为对象完成动态内存申请,同时在析构函数中释放,这样就形成了动态内存的完整使用循环

       假设在C语言中,有个结构体,要单独的malloc去分配。在C++中,我们可以去融合到,对象的构造函数里面来完成,同时到析构函数里去释放。所以就在C++里面弄了动态内存的构造和析构的完整使用循环。什么时候分配动态内存,是那么时候释放动态内存,完全是自动的。你只要写好你的类的构造和析构函数,将来别人在创建对象和销毁对象的时候,就会自动的对这个类,进行动态内存的分配和动态内存的释放,这套机制发明出来,是帮助我们写程序的因为在C里面这些都是需要自己做的。

第三,C语言中struct无构造函数概念,所以struct中需要用到动态内存时必须在定义struct变量后再次单独申请和释放,

第四,C++ class的构造和析构特性,是C++支持面向对象编程的一大语言特性。

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_40787463/article/details/106421073

智能推荐

#LT8713SX适用于Type-C/DP1.4转三路Type-C/DP1.4/HDMI2.0应用方案,分辨率高达4K60HZ,支持SST/MST功能。-程序员宅基地

文章浏览阅读263次,点赞2次,收藏4次。LT8713SX是一款高性能Type-C/DP1.4转Type-C/DP1.4/HD-DVI2.0转换器,具有三个可配置的DP1.4/HD-DVI2.0/DP++输出接口和音频输出接口。当接收通过单个 DP 链路打包和传输的多个视频/音频流时,LT8713SX 将打包的多流恢复为多个不同的视频/音频流。在SST模式下,三个TX接口输出相同的视频流/音频流。此外,还包括三个用于 CC 通信的 CC 控制器,以实现 DP Alt 模式和供电功能。•​​​​​​​笔电/显示器扩展。

【截稿在即|投稿优惠】2024教育创新、语言知识与信息管理国际会议(EILKIM 2024)-程序员宅基地

文章浏览阅读603次,点赞9次,收藏17次。热忱欢迎高校,科研机构专家,学者企业界人士及其他相关人员踊跃投稿并参会交流,与会学者们可通过此次会议聆听知名专家的精彩报告,一同分享行业内领先的研究成果与创新想法。会议所录用的论文将以会议论文集形式出版,出版后将提交至EI Compendex和Scopus等数据库检索。

java.sql.SQLSyntaxErrorException Unknown column····_nested exception is java.sql.sqlsyntaxerrorexcepti-程序员宅基地

文章浏览阅读1.1w次。今天在连接数据库时,遇到了这样一个问题java.sql.SQLSyntaxErrorException: Unknown column ‘name’ in 'field list’看上去好像是name这个列是未知的,搞得我一度怀疑我是不是哪个语句写错了,然后修修改改了很久,也在网上找了资料,但是并没有解决我的问题。String name=request.getParameter("yonghuming");String email=request.getParameter("youxiang");S_nested exception is java.sql.sqlsyntaxerrorexception: unknown column 'xiang_

微信SDK图片上传功能-程序员宅基地

文章浏览阅读122次。2019独角兽企业重金招聘Python工程师标准>>> ..._图片上传api微信csdn

Redis 主从复制原理--增量复制原理分析-程序员宅基地

文章浏览阅读223次,点赞4次,收藏3次。主从复制是Redis集群保证数据一致性的重要机制,如果其中的某个从服务器由于网络中断等原因与主服务器断开连接后,从服务器重新连接上来时。为了保障主从数据的一致性,此时主服务器会发起一次同步命令。由于从服务器只是短暂的断开了一会儿,丢失的数据并不多。如果直接发起全量复制的话,就会很浪费资源,如果数据量很大的话,全量同步也会拖慢Redis集群的响应效率。此时Redis就需要增量复制来保障数据一致性了。

Java实现MySQL图片存取操作_java怎么把mysql的图片存到本地并设置像素-程序员宅基地

文章浏览阅读4.4k次。存入操作/*---------------表结构------------表名:student2+--------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+--------+-------------+-----_java怎么把mysql的图片存到本地并设置像素

随便推点

将英文版的Visual Studio 2019 切换为简体中文显示_visio2019英文怎么设置中文-程序员宅基地

文章浏览阅读5.7k次。在使用Visual Studio 2019集成IDE环境下进行开发工作时;需要将IDE的环境修改为中文环境进行开发工作,这对于不太熟悉Visual Studio 2019 环境的人来说是十分友好的。_visio2019英文怎么设置中文

基于android平台实现英语学习记单词app项目演示【附项目源码+论文说明】分享_背单词app开发-程序员宅基地

文章浏览阅读1.1k次。这些工具的共同点是学习者在学习的过程中,只能按照固定的单词顺序线性的学习[1],不能与这些资源进行任何交互,更不能对学习者的学习特征做出相应的调整和反馈。英语在国内目前属于各类的考试的必修课程,中考、高考、考研、出国,几乎贯穿所有学习阶段。复习模块提供两种复习模式:随机从已背单词本选单词,然后随机空出几个字母,进行单词填空,写错则将该单词从已背单词本删除,并加入陌生单词本;本研究项目即针对传统单词书存在的发展弊端,针对行开发一款单词记忆APP,用户可以依靠本项目软件,实现单词的电子阅读,优化相关体验。_背单词app开发

使用Scala开发一个DSL来做远程调用-程序员宅基地

文章浏览阅读341次。问题背景最近在实施微服务化过程中,发现了一类潜在需求(这就是传说中开发者的敏锐嗅觉=_ =?):如何快速的来进行远程RPC调用,来进行测试、排查问题?服务调用方式有两种形..._scala 程序出发远程脚本

常见数字证书类型_区分订户证书和ca证书需要用到的证书扩展-程序员宅基地

文章浏览阅读7k次,点赞3次,收藏7次。1 数字证书1.1 概述  数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,数字证书不是数字身份证,而是身份认证机构盖在数字身份证上的一个章或印(或者说加在数字身份证上的一个签名)。它是由权威机构——CA机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份。2 证书格式2.1 ..._区分订户证书和ca证书需要用到的证书扩展

ubuntu 卸载 python2 安装python3 opencv_ubuntu 卸载 python2 安装 python3-程序员宅基地

文章浏览阅读5.9k次。1.卸载python2.7sudo apt-get remove python2.72.卸载python2.7及其依赖sudo apt-get remove --auto-remove python2.73.消除python2.7sudo apt-get purge python2.7 or sudo apt-get purge --auto-remove python2.7安装python3:sudo apt-get install python3.8:安装open.._ubuntu 卸载 python2 安装 python3

Web基础 ( 一 ) HTML_web段落可以用-程序员宅基地

文章浏览阅读1.3k次。​ 这些标签用于在 HTML 页面中创建块元素,通常用于在页面中创建段落、标题、列表、表格、DIV 区块等等。显示的内容, 就是开始标签与结束标签之间内容, 不用定义, 但可以通过 JavaScript 获取。可以是正整数, 也可以是百分比 , 可以修改 table , th , td。​ 有的即显示, 又传值 : text , password , date , number。:这些标签具有行内元素的特点,但是可以设定宽高,可以和其他行内元素或块级元素在同一行上显示。_web段落可以用

推荐文章

热门文章

相关标签