c++里面创建对象,什么时候应该用new什么时候应该直接创建?

jdfhgfdkh 2008-07-07 03:47:15
c++里面, 创建对象, ClassName object(初始化参数);在Stack栈里面分配空间,自动释放。
或者用 ClassName object=new ClassNam();在heap堆里面分配空间,要手动释放。

什么时候用哪一种来创建对象比较好呢?

小弟初学C++。以前学过java,从来都是new。所以对这个问题不很清楚。
...全文
3125 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
hurry281 2008-07-08
  • 打赏
  • 举报
回复
分配空间的大小,以及对象的多少不确定时
lijianjoin 2008-07-08
  • 打赏
  • 举报
回复
动态的new,非动态的不用new,
不定长的new,定长的不new

我认为new是c++的关键。可以事先多态等等。
jy01807853 2008-07-08
  • 打赏
  • 举报
回复
当你不确定需要多大的时候用NEW
类里面用NEW实现多态, 有的时候解决类
接口也用NEW, 这个一下说不清楚
用NEW有一定内存泄露的风险, 可以考虑用
C++标准库设施
jdfhgfdkh 2008-07-08
  • 打赏
  • 举报
回复
谢谢各位! 因为分太少,没办法只好给几位完全回答我问题的。
DarknessTM 2008-07-08
  • 打赏
  • 举报
回复
c++里需要自己回收空间,所有 new 出现的很多 容易造成内存碎片多,其他其实也没什么……

要是讲究效率 还可以利用自己的内存池……
lily604 2008-07-08
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 hurry281 的回复:]
分配空间的大小,以及对象的多少不确定时
[/Quote]
我看你有戏 2008-07-08
  • 打赏
  • 举报
回复
比如读文件的时候

你可以定义一个数组 BYTE pBuff[4000*1024]; 用来存放文件数据

这样如果文件很小就会浪费内存空间,文件很大则文件数据不能全部读出

所以在读文件的时候需要根据文件的size来开辟一块内存

BYTE *pBuff = new BYTE[size]使这块内存刚刚好可以存放文件数据

像这种情况就需要new 了
开心爸爸84 2008-07-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 Lucky1118 的回复:]
个人认为,new能不用就不用
[/Quote]

elegant87 2008-07-07
  • 打赏
  • 举报
回复
当你不知道要创建多少对象的时候,有new比较好,动态分配。
如:
int *a=new int[20];
记得要delete呀
delete [] a;
偶像罗斯福 2008-07-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 artman 的回复:]
什么时候用哪一种来创建对象比较好呢?

new以下情况可以使用
1 申请对象数量不确定时
2 需要空间较大时
[/Quote]
自己管理内存可以可以节省空间。
artman 2008-07-07
  • 打赏
  • 举报
回复
什么时候用哪一种来创建对象比较好呢?

new以下情况可以使用
1 申请对象数量不确定时
2 需要空间较大时
no111 2008-07-07
  • 打赏
  • 举报
回复
如果类体积很大,还是用 new 比较好.
毕竟栈的空间有限
languagec 2008-07-07
  • 打赏
  • 举报
回复
class 就相当于变量类型,什么时候用new 什么时候直接定义, 和普通的变量类型一样.
Lucky1118 2008-07-07
  • 打赏
  • 举报
回复
个人认为,new能不用就不用
yyyapple 2008-07-07
  • 打赏
  • 举报
回复
ClassName object(初始化参数);在Stack栈里面分配空间,自动释放。

不一定在栈中,比如全局变量

说一点
就类来讲,动态分配比较灵活,并且更能够体现多态特性;

楼下继续
xkyx_cn 2008-07-07
  • 打赏
  • 举报
回复
1,2句话讲清楚真的很难,更特别的是从java转向c++……

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧