¿Por qué es necesario cubrir las soluciones de palabras clave?
Los requisitos de anulación son:
1 Para métodos no sobrecargados, la palabra clave de anulación no se puede agregar; de lo contrario, se producirá un error de compilación.
2 Para métodos sobrecargados, debe usar la palabra clave override; si desea ocultar métodos en la clase base, debe usar la palabra clave new.
3 Con el IDE, simplemente ingrese override y espacio en Visual Studio.Net, y todos los métodos sobrecargados en la clase base se enumerarán automáticamente.
En este sentido, creo que es posible simular la función de la palabra clave override con la ayuda de la función typedef, plantilla o macro de C++.
Una idea mía no formada es:
1 Definir virtual como VIRTUAL y luego definir el nombre de la función virtual escrita como ilegal. Sobrecargarlo directamente en una subclase dará como resultado una compilación. error de tiempo.
2 Para definir OVERRIDE, primero verifique si el nombre de la función sobrecargada tiene una definición ilegal. De lo contrario, defina un resultado ilegal, lo que provocará un error en tiempo de compilación, de modo que la palabra clave OVERRIDE no se pueda aplicar a no. -funciones sobrecargadas.
Si hay una definición ilegal, primero cancele la definición ilegal del nombre de la función sobrecargada, luego vuelva a cargarla normalmente y luego redefina ilegalmente nuevamente, para que la función virtual se pueda recargar correctamente.
Pero todavía hay algunos problemas, es decir, al escribir la implementación de funciones sobrecargadas, habrá algunos problemas al llamar a funciones declaradas de esta manera, porque el nombre de la función correspondiente se ha definido como ilegal y no puede ser utilizado directamente. Es posible que se requiera una definición de macro más compleja para resolverlo.
Esta es la idea, pero hay muchos problemas en su implementación. Todavía no he tenido éxito con el experimento, así que guardo mi idea aquí para consultarla en el futuro.