问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c++的类中,声明一个对象好还是用指针申请一块空间好?51

发布网友 发布时间:2023-11-24 06:48

我来回答

2个回答

热心网友 时间:2024-11-29 23:50

你提的问题很好,这个就是c++和java之间的区别,c++函数可以不写在类里面,这样就产生了全局变量定义,文件#include等,在java中,A a = new A()
c++中等同于 A a;
另外在c++中还有另外一中声明和实例化就是使用指针,如:A* a= new A()
c++中的A a;就已经构造了对象;
而在java中 A a; 就是声明,还没有分配空间,在c++中就非常的灵活,
A a;在栈(stack)上分配空间,A * a= new A;在堆(heap)上分配空间
栈上空间自动回收,堆空间需要程序员手动回收

热心网友 时间:2024-11-29 23:50

这个本质上是对象分配区域的问题,前者是在栈(stack)上分配空间,后者是在堆(heap)上分配空间。

栈上分配空间的好处是快,而且对象生存期是自动的,离开当前域之后就自动析构回收。坏处就是栈空间有限,而且不能人为控制对象的生存期,比如你无法将一个函数内部的栈上的对象返回,因为这个函数执行完毕后栈空间会自动回收。

堆上分配空间就相反,new一个空间出来是很慢的,而且对堆上对象的访问也稍慢于栈上。一旦new一个空间出来,需要自己手动去delete回收,系统不会帮你管理回收(用GC的除外),但是分配空间大小灵活,而且正因为是手动回收的,你可以自由控制对象生存期,常用来跨域传递对象。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
"应交税费-应交增值税"账本中应该怎么设置明细科目 本届奥运会女排冠军是哪个 女子排球冠军是哪个国家 巴黎奥运会女排冠军是哪国 奥运女排冠军是哪个国家 奥运会女排冠军是哪国 2024年奥运会女排冠军 电磁炉玻璃面板换下多少钱一个 电磁炉换个面板要多少钱一个 电磁炉面板要换多少钱 、农历1970年6月27早8时生日求大师看一下今年运程 求20引脚的JTAG封装(altium designer的)9 中国五大名牌牙椅29 普通电动座椅有哪些组成? 一个男人性格敏感怎么办?7 男生在一段感情里太敏感,怎么办?12 a1530支持什么网络 路由器用户名和密码怎么填?182 使用路由器的无线桥接功能,要知道被桥接网络的用户名和密码吗?2 wifi路由器怎么修改名字?2961 怎么知道自己的wifi用户名和密码 ?153 无线路由器的用户名和密码是什么283 谁知道五台山塔院寺和尚辈分?3 请问五台山有哪些不见外人的高僧大德97 8341是哪个法师说的?374 五台山现任方丈哪位?法号是什么呢?55 如何改进语文自学方法,提高学生创造能力 怎么用linux命令获取某文件夹下的所有jar文件并将jar文件中类名相同的... linux下如何查找当前目录下所有jar包中包含AAA内容的class文件名_百度知... HDMI2和RX580可以兼容吗?3 分馏和蒸馏在原理及装置上有哪些异同6 抄写新单词用英语怎么谠1 如何用altium designer画电路原理图2 C语言中当我定义了一个指针变量的同时,是否就为这个指针变量开...3 农历1970年6月27生日此人一生运气如何1 华硕笔记本,网页打不开9 如何快速抄写英语单词5 我被冻结了,我没有用绑定的电话号码了,怎么解冻啊?8 现在还有没有从深圳龙华龙胜地铁到惠州十里银滩直达大巴,几点出... C++中指针的地址和地址值在内存中如何分配,相互之间又有什么...1 altium designer中jtag插座放在哪个库中,那...2 中国最早的五言诗和七言诗是什么20 有谁知道从深圳怎么去惠州十里银滩的CP长者屋吗?9 、分馏和蒸馏在原理及装置上有哪些异同?如16 被冻结了怎么解冻?20 词语接龙 隆重一( )一( )一( )一( )一( )一( ...9 全球学位认证中心的信息可以自己申请吗?45 野生沉香和人工沉香怎么鉴定?求指教 被冻结了怎么办解冻 1970年4月24生日属狗【农历】,求大师看一下今年和明年运...5