猿问

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

何时在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.

这有助于防止内存泄漏,因为您总是必须将删除放在某个地方(即,当您剪切并粘贴到析构函数或其他地方时)。


qq_遁去的一_1
浏览 288回答 3
3回答

神不在的星期二

我应该用哪种方法?这几乎不是由键入首选项决定的,而是由上下文决定的。如果需要将对象保存在几个堆栈之间,或者对于堆栈来说太重,则可以将其分配到免费存储中。此外,由于您正在分配一个对象,您也负责释放内存。查找delete接线员。为了减轻使用免费商店管理的负担,人们发明了这样的东西auto_ptr和unique_ptr..我强烈建议你看看这些。它们甚至可能对您的打字问题有所帮助;-)
随时随地看视频慕课网APP
我要回答