Я использую С++ в течение короткого времени, и мне было интересно узнать о новом ключевом слове. Просто я должен использовать его или нет?
1) С новым ключевым словом...
MyClass* myClass = new MyClass();
myClass->MyField = "Hello world!";
2) Без нового ключевого слова...
MyClass myClass;
myClass.MyField = "Hello world!";
С точки зрения реализации они не кажутся разными (но я уверен, что они есть)... Однако мой основной язык - это С#, и, конечно, первый метод - это то, к чему я привык.
Трудность, похоже, заключается в том, что метод 1 сложнее использовать с классами std С++.
Какой метод использовать?
Обновление 1:
Недавно я использовал новое ключевое слово для памяти кучи (или свободного хранилища) для большого массива, который вышел из области действия (т.е. был возвращен из функции). Где раньше я использовал стек, из-за которого половина элементов была повреждена за пределами видимости, переход на использование кучи гарантировал, что элементы были в такте. Ура!
Обновление 2:
Недавно мой друг сказал мне, что существует простое правило использования ключевого слова new
; каждый раз, когда вы вводите new
, введите delete
.
Foobar *foobar = new Foobar();
delete foobar; // TODO: Move this to the right place.
Это помогает предотвратить утечку памяти, поскольку вам всегда нужно куда-то удалять (т.е. когда вы вырезаете и вставляете его в деструктор или иначе).