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