C++对象的动态建立

C++对象的动态建立和释放

在C++中,如果定义的对象是静态的,在程序运行过程中,对象所占的空间是不能随时释放的。

为提高内存空间的利用率,希望在需要用到对象时才建立对象,在不需要用该对象时就撤销它,释放它所占的内存空以供别的数据使用。

如果前面章节跟随小林的学习路线学习,应该知道可以用new运算符动态地分配内存,用delete运算符释放这些内存空间,C++对象同样适用,可以用new运算符动态建立对象,用delete运算符撤销对象。 

用new运算符动态地分配内存后,将返回一个指向新对象的指针的值,即所分配的内存空间的起始地址,程序员可以获得这个地址,并通过这个地址来访 问这个对象。

C++允许在执行new时,对新建立的对象进行初始化。

用new建立的动态对象一般是不用对象名的,是通过指针访问的,主要应用于动态的数据结构,如链表。

访问链表中的结点,并不需要通过对象名,而是在上一个结点中存放下一个结点的地址,从而由上一个结点找到下一个结点,构成链接的关系。 

在执行new运算时,如果内存量不足,无法开辟所需的内存空间,目前大多数C++编译系统都使new返回一个0指针值,根据返回值是否为0,可以判断分配内存是否成功。

C++使用delete运算符时,在释放内存空间之前,会自动调用析构函数。

C++对象赋值

C++对象之间的赋值可以通过赋值运算符=来实现。 

对象赋值的一般形式为

对象名1 = 对象名2;

对象名1和对象名2必须属于同一个类。

案例:C++对象赋值

#include 
using namespace std;
class Box //盒子类 
{public :Box(int =10,int =10,int =10); //声明有默认参数的构造函数int volume( ); //声明求体积函数 private :int height; //高 int width; //宽 int length; //长 
};
Box::Box(int h,int w,int len)
{height=h;width=w;length=len;
}
int Box::volume( )
{return height*width*length; //求体积
}
int main( )
{Box box1(2,3,4); //定义对象box1cout<<"box1的体积是:"<endl;Box box2; //定义对象box2box2=box1; //将box1的值赋给box2cout<<"box2的体积是:"<endl; return 0;
}

编译运行结果:

box1的体积是:24
box2的体积是:24--------------------------------
Process exited after 0.7038 seconds with return value 0
请按任意键继续. . .

声明:

本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/338538.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java字符连接字符串数组_Java中连接字符串的最佳方法

java字符连接字符串数组最近有人问我这个问题–在Java中使用运算符连接字符串是否对性能不利&#xff1f; 这让我开始思考Java中连接字符串的不同方法&#xff0c;以及它们如何相互对抗。 这些是我要研究的方法&#xff1a; 使用运算符 使用StringBuilder 使用StringBuffer…

微型计算机使用的普通编码是,2017计算机一级考试选择题练习及答案(2)

35、一般计算机硬件系统的主要组成部件有五大部分&#xff0c;下列选项中不属于这五大部分的事( B )A)运算器 B)软件C)输入设备和输出设备 D)控制器36、微型计算机主机的主要组成部分有( A)。A)运算器和控制器B)CPU 和软盘C)CPU 和显示器D)CPU、内存储器和硬盘37、微型计算机硬…

C 构造函数重载

C 用参数初始化表对数据成员初始化在C 中&#xff0c;构造函数的函数可以通过体内赋值语句对数据成员实现初始化&#xff0c;C 还提供另一种初始化数据成员的方法&#xff0c;用参数初始化表来实现对数据成员的初始化。这种方法不在函数体内对数据成员初始化&#xff0c;而是在…

乐播投延迟很高_大屏也要高刷新!华为4K@120智慧屏初体验,屏幕软件都够硬

买电视就是买屏幕&#xff0c;华为智慧屏也不例外。可参数大而全的旗舰产品往往都有着相当高昂的售价&#xff0c;假如你不愿意将就千元级别的画质&#xff0c;希望电视能坚持更长时间&#xff0c;却又没有足以点满所有技能树的预算……华为新出的S系列智慧屏&#xff0c;大概正…

java常见性能优化_十大最常见的Java性能问题

java常见性能优化Java性能是所有Java应用程序开发人员都关心的问题&#xff0c;因为快速使应用程序与使其正常运行同等重要。 史蒂文海恩斯&#xff08;Steven Haines&#xff09;使用他在Java性能问题上的个人经验得出的结论是&#xff0c; 大多数问题都有共同的根本原因 。 因…

为甚 html 显示为源码,显示字符串作为美化HTML源代码

我正在开发一个ASP.NET MVC Web应用程序。在一个页面上&#xff0c;我有一个字符串&#xff0c;如下所示&#xff1a;This is some text !对于预览模式&#xff0c;我使用Html.Raw(Model.MyText)&#xff0c;文本显示为呈现的HTML&#xff1a;此是一些文字&#xff01;我现在想…

C语言 | 链表概述

C语言链表概述链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构&#xff0c;是根据需要开辟内存单元。链表有一个“头指针”变量&#xff0c;它存放一个地址&#xff0c;该地址指向一个元素。链表中每一个元素称为“结点”&#xff0c;每个结点都应包括两个部…

笔记本电脑频繁自动重启_如何解决电脑频繁自动重启

电脑频繁自动重启的原因可能是系统问题&#xff0c;也可能是电脑硬件出现问题&#xff0c;需要经过仔细排查才能找到自动重启的原因。电脑频繁自动重启的原因一、显卡或CPU温度过高当显卡和CPU的温度达到一定温度以后&#xff0c;主板就会启用自动保护功能&#xff0c;使电脑重…

jooq_jOOQ与Hibernate:何时选择哪个

jooqHibernate已成为Java生态系统中的事实上的标准&#xff0c;事实上&#xff0c; 如果标准对您很重要 &#xff0c;并且如果您将JCP与ISO&#xff0c;ANSI&#xff0c;IEEE等置于同一级别&#xff0c;那么Hibernate也是实际的JavaEE标准实现。 本文的目的不是讨论标准&#…

html5编辑器新手用,3款容易上手的HTML5编辑工具推荐~

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼我们的生活已经时刻可见H5页面的身影&#xff0c;从美食到用车、从购物到求职&#xff0c;可以说HTML5技术对我们生活的影响是颠覆性的。今天小编就给大家推荐5款容易上手的H5页面&#xff0c;大家可以通过自己制作H5页面来感受一下…

C语言 | 循环语句总结

C语言循环的嵌套一个循环体内又包含另一个完整的循环结构&#xff0c;称为循环的嵌套。内嵌的循环体中还可以嵌套循环&#xff0c;这就是多层循环。3种常用循环语句&#xff1a;while语句、do...while语句和for语句可以相互嵌套。C语言循环的比较3种循环语句都可以用来处理同一…

python 死循环程序能占满cpu吗_运行tensorflow python程序,限制对GPU和CPU的占用操作...

一般情况下&#xff0c;运行tensorflow时&#xff0c;默认会占用可以看见的所有GPU&#xff0c;那么就会导致其它用户或程序无GPU可用&#xff0c;那么就需要限制程序对GPU的占用。并且&#xff0c;一般我们的程序也用不了所有的GPU资源&#xff0c;只是强行霸占着&#xff0c;…

java 不规则 拼图_Java中不一致的操作会扩大规则

java 不规则 拼图总览 当您在Java中执行一元或二进制运算时&#xff0c;标准行为是使用最宽的操作数&#xff08;或对于byte &#xff0c; short和char &#xff0c;使用更大的操作数&#xff09;。 这很容易理解&#xff0c;但是如果考虑最佳类型可能会造成混淆。 乘法 当执行…

账户的配置使您无法使用该计算机,2个方法解决“user profile service服务未能登录无法加载用户配置文件”...

win8/10系统&#xff1a;启动电脑显示windows标志时&#xff0c;长按电源键强行关机&#xff0c;重复此操作三次&#xff0c;系统将会进入“自动修复”。然后在“自动修复”界面中&#xff0c;选择“高级选项”>“疑难解答”>“高级选项”>“启动设置”>“重启”&a…

endp 汇编start_飞思卡尔Kinetis L 汇编语言启动文件startup_MK25Z4简单分析

打开Freedom KL25的例程包&#xff0c;任意找一个code example&#xff0c;以lower_power_dma_uart_demo为例&#xff0c;分析一下启动汇编文件的代码。代码主要分三部分&#xff1a;堆栈等的配置、向量表、初始启动跳转。1. 堆栈配置; Stack Configuration; Stack Size (in …

自定义ui_如何允许用户自定义UI

自定义ui理念 利用JavafX / FXML的声明性设计模式&#xff0c;并允许用户仅通过使用例如SceneBuilder打开某个视图即可重新定制布局或添加新控件&#xff0c;甚至根据用户需要更改样式&#xff0c;从而无需任何编码即可自定义某个视图。 FXML文件 CSS基本上可以放置在通过URL可…

C语言 | 内部与外部函数

C语言函数的声明和定义一个函数一般由两部分组成&#xff1a;声明部分执行语句C语言对变量而言&#xff0c;声明与定义的关系稍微复杂一些&#xff0c;在声明部分出现的变量有两种情况&#xff1a;一种是需要建立存储空间的。另一种是不需要建立存储空间的。前者称为定义性声明…

进程和线程计算机组成原理面试题,2016年云南财经大学信息学院计算机组成原理复试笔试最后押题五套卷...

一、选择题1&#xff0e; 设文件索引节点中有7个地址项&#xff0c;其中4个地址项为直接地址索引&#xff0c;2个地址项是一级间接地址索引&#xff0c;1个地址项是二级间接地址索引&#xff0c;每个地址项大小为4字节&#xff0c;若磁盘索引块和磁盘数据块的大小均为256字节&a…

获取客户端ip_代理IP工具能否解决反爬?

互联网已成了生活中的部分&#xff0c;从事互联网的工作者&#xff0c;避免不了需要去一些网站上进行爬取需要的数据来达到自己产品或者业务上的需求。比如反爬策略&#xff0c;但是&#xff0c;使用代理IP工具一定可以解决反爬虫策略吗&#xff1f;一、不同的网站有不同的反爬…

C语言 | 结构体数组

C语言结构体数组概述一个结构体变量中可以存放一组有关联的数据&#xff0c;如一个学生的学号、姓名、成绩等数据&#xff0c;如果有10个学生的数据需要参加运算&#xff0c;显然应该用数组&#xff0c;这就是结构体数组。结构体数组与之前介绍的数值型数组的不同之处在于每个数…