Итак, вот вопрос ... это новое ключевое слово устарело?Являются ли новые объекты устаревшими?
Рассмотрите в C# (и, я считаю, java) существуют строгие правила для типов. Классы являются ссылочными типами и могут создаваться только в куче. Типы POD создаются в стеке; если вы хотите выделить их в куче, вам нужно поместить их в тип объекта. Исключение составляют C12, structs
, они могут быть созданы в стеке или в куче.
Учитывая эти правила, имеет ли смысл, что нам все еще нужно использовать новое ключевое слово? Не имеет ли смысл, чтобы язык использовал правильную стратегию распределения, основанную на типе?
К примеру, в настоящее время мы должны написать:
SomeClassType x = new SomeClassType();
вместо
SomeClassType x = SomeClassType();
или даже просто
SomeClassType x;
компилятор, основанный на том, что тип создаваемого является ссылочным типом, вперед и выделяйте память для x в куче.
Это относится к другим языкам, таким как ruby, php, et al. C/C++ позволяют программисту больше контролировать, где создаются объекты, поэтому у него есть все основания требовать нового ключевого слова.
new
просто переживание 60-х годов и наше наследие на основе C?
И это не сообщество wiki, потому что ...? –
Не знаю. Как вы думаете, это должно быть? –
Это совершенно правильный вопрос. И хороший, тоже. Нет необходимости в CW. – bsneeze