¿La clase local, la clase interna y la clase anidada tienen las mismas características en C++?¿La clase local, la clase interna y la clase anidada son las mismas cosas en C++?
Respuesta
Clase local y Clase anidada son bestias diferentes.
A La clase anidada es una clase declarada dentro del alcance de otra clase.
A La clase local se declara dentro de una definición de función.
La clase interna es un término C++ no estándar, así que no estoy seguro de cómo definirlo.
clases anidadas:
Documentación de IBM como una buena documentación here.
Para resumir:
- El nombre de una clase anidada es local en su clase envolvente. A menos que use punteros, referencias o nombres de objetos explícitos, las declaraciones en una clase anidada solo pueden usar construcciones visibles, incluidos nombres de tipos, miembros estáticos y enumeradores de la clase adjunta y las variables globales.
- Las funciones miembro de una clase anidada siguen reglas de acceso regulares y no tienen privilegios de acceso especiales para los miembros de sus clases adjuntas. Las funciones miembro de la clase envolvente no tienen acceso especial a los miembros de una clase anidada
Clases locales:
Esta respuesta mío here documenta los puntos sutiles asociados con clases locales.
Citando proyecto de C++ 11 (N3290):
9.7 declaraciones de clases anidadas [class.nest]
1 Una clase puede ser declarado dentro de otra clase. Una clase declarada dentro de otra se llama clase anidada .
9.8 declaraciones de clase locales [class.local]
1 Una clase puede ser declarado dentro de una definición de función; tal clase se llama una clase local.
No existe el concepto de clase interna especificada en C++ estándar.
Las clases internas capturan la referencia this
de la clase adjunta. Una jerarquía de instancias de clase interna forma una estructura de árbol. Esto es único para Java.
- 1. Devuelve el puntero a la clase interna anidada de la clase externa genérica
- 2. Clase interna en la interfaz vs en la clase
- 3. cómo usar la clase anidada en otra clase en java?
- 4. Clase anidada: llamada a la clase anidada de la clase principal
- 5. Clase de actividad interna anidada en Android
- 6. La subclasificación clase interna de la clase externa versus otra clase interna
- 7. clase Anotar con clase interna
- 8. ¿Cuáles son las ventajas de la clase interna anónima (en comparación con la clase interna no anónima)?
- 9. clase interna y externa de clase en C#
- 10. Clase interna que accede a la clase externa
- 11. getter y setter para la clase en la clase C#
- 12. Llamar a la función de clase externa desde la clase interna
- 13. java.lang.NoClassDefFoundError: en la clase interna anónima
- 14. Método La clase interna local solo puede acceder a la variable local final.¿Por qué?
- 15. Pregunta sobre C++ clase interna
- 16. clase interna en AS
- 17. Creando una instancia de la clase interna
- 18. clase interna dentro de la interfaz
- 19. Método estático que devuelve la clase interna
- 20. ¿Puede una clase anidada de C++ heredar su clase adjunta?
- 21. acceso a los datos privados de los miembros de la clase externa en la clase interna
- 22. cómo acceder a una variable de clase de la clase externa de clase interna en rubí
- 23. C++: clase anidada de una clase de plantilla
- 24. C++ devolviendo clase anidada con la plantilla en el problema de clase base
- 25. Problema de acceso en la clase local
- 26. C++ clase local como functor
- 27. Clase anidada .GetType()
- 28. En Java, ¿cómo accedo a la clase externa cuando no estoy en la clase interna?
- 29. clase anidada/interior en archivo externo
- 30. C++ para la clase
Y no hay clases internas en C++. Ese es un concepto de Java. –