Voy a ir contra la corriente que parece (así que espero votos hacia abajo, pero por favor deje un comentario para indicar el por qué).
No veo ninguna razón para prohibir la asignación del montón, principalmente porque no me gusta adivinar los posibles usos de las clases que creo.
Como regla de diseño, tiendo a poner tan pocas restricciones sobre los usos de mis clases como sea posible. Esto significa la menor cantidad posible de suposiciones. No hay nada más enloquecedor que no poder hacer lo que deseas simplemente porque estaba prohibido ... por razones desconocidas o simplemente incorrectas (denotando las creencias supersticiosas/erróneas del escritor de la biblioteca).
Además, el pragmatismo enseña que es casi imposible prevenir cualquier cosa en C++. Por ejemplo, algunas personas han hablado sobre guardias -> ¿y si me gustaría crear una súper clase (que convenientemente agrega el registro)? Luego pondría la clase de protección como un atributo, e incluso si su operador (la clase original) new
es privado, mi superclase se puede instanciar en el montón a menos que de alguna manera se replique el mecanismo.
Entonces, en cuanto a mí, no es una cuestión de por qué o cómo. Simplemente no jugueteo con los esquemas de asignación de memoria en el código de la biblioteca, depende del usuario usar lo que sea más conveniente para ella.
Realmente no puedo pensar en una buena razón para la pregunta que señala. Con la redacción actual de esta pregunta, es muy probable que obtenga muchas respuestas a * ¿por qué preferiría asignar en la pila en lugar del montón? *, Que es diferente de * por qué puedo querer prohibir a los usuarios crear objetos de mi clase en el montón? * –
@David: modificó la redacción de acuerdo con sus consejos. Gracias. – ereOn
Modifiqué el título para reflejar la pregunta real. – Puppy