为了账号安全,请及时绑定邮箱和手机立即绑定

何时在C+中使用新关键字?

何时在C+中使用新关键字?

C++
qq_遁去的一_1 2019-06-27 16:14:05
何时在C+中使用新关键字?我使用C+已经有一段时间了,我一直在想新的关键词。简单地说,我是否应该使用它?1)新的关键词.。MyClass* myClass = new MyClass();myClass->MyField = "Hello world!";2)没有新的关键词.。MyClass myClass;myClass.MyField = "Hello world!";从实现的角度来看,它们看起来并没有什么不同(但我确信它们是不同的).然而,我的主要语言是C#,当然第一种方法是我所习惯的。困难似乎是方法1更难用于STD C+类。我应该用哪种方法?更新1:我最近用了新的关键字用于堆记忆(或免费商店)用于超出作用域的大型数组(即从函数返回)。在我使用堆栈之前,它导致一半的元素在作用域之外被破坏,切换到堆使用可以确保元素是有技巧的。耶!更新2:我的一位朋友最近告诉我,使用new关键字;每次键入new、类型delete.Foobar *foobar = new Foobar();delete foobar; // TODO: Move this to the right place.这有助于防止内存泄漏,因为您总是必须将删除放在某个地方(即,当您剪切并粘贴到析构函数或其他地方时)。
查看完整描述

3 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

我应该用哪种方法?

这几乎不是由键入首选项决定的,而是由上下文决定的。如果需要将对象保存在几个堆栈之间,或者对于堆栈来说太重,则可以将其分配到免费存储中。此外,由于您正在分配一个对象,您也负责释放内存。查找delete接线员。

为了减轻使用免费商店管理的负担,人们发明了这样的东西auto_ptrunique_ptr..我强烈建议你看看这些。它们甚至可能对您的打字问题有所帮助;-)


查看完整回答
反对 回复 2019-06-27
  • 3 回答
  • 0 关注
  • 287 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信