Ok, esta es la pregunta ... ¿está obsoleta la nueva palabra clave?¿Los objetos nuevos están obsoletos?
Considere en C# (y java, creo) que hay reglas estrictas para los tipos. Las clases son tipos de referencia y solo se pueden crear en el montón. Los tipos de POD se crean en la pila; si desea asignarlos en el montón, debe colocarlos en un tipo de objeto. En C#, structs
son la excepción, se pueden crear en la pila o en el montón.
Dadas estas reglas, ¿tiene sentido que aún tengamos que usar la nueva palabra clave? ¿No tendría sentido para el lenguaje utilizar la estrategia de asignación adecuada en función del tipo?
Por ejemplo, actualmente tenemos a escribir:
SomeClassType x = new SomeClassType();
en lugar de
SomeClassType x = SomeClassType();
o incluso sólo
SomeClassType x;
El compilador, basado en que el tipo que se está creando es un tipo de referencia, adelante y asigne la memoria para x en el montón.
Esto se aplica a otros lenguajes como ruby, php, et al. C/C++ permite al programador un mayor control sobre dónde se crean los objetos, por lo que tiene buenas razones para requerir la nueva palabra clave.
¿Es new
solo un remanente de los años 60 y nuestro patrimonio basado en C?
¿Y esto no es wiki de la comunidad porque ...? –
No lo sé. ¿Crees que debería ser? –
Esta es una pregunta perfectamente válida. Y una buena tambien. Sin necesidad de CW. – bsneeze