Errores, fallos, preguntas - página 2860
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
¿Es este el comportamiento correcto del compilador? Parece que A::i no se crea en el momento de llamar al método A::f() que llama a A::i.
¿Qué se entiende por "creado"?
static es sólo una forma de crear un rastrillo para ocultar una variable o función global, limitando la visibilidad de una función o clase
La memoria para una variable global siempre existe.
Y sí, para las variables globales el orden de inicialización es muy importante (me refiero a evitar acceder a la variable antes de que esté inicializada)
Este ejemplo funcionó...
En el ejemplo anterior ha funcionado...
¿Vas a cambiar el compilador a estas alturas? Personalmente, me gustaría mantenerlo como está.
¿Cambiará el compilador en este punto? Personalmente, me gustaría mantener todo como está.
No pensamos cambiar el comportamiento.
Pero existe una tarea diferida de detección de errores de acceso a variables globales (antes de la inicialización).
Si implementamos esta función, obtendremos una advertencia al compilar el código anterior: la función A::f() se utiliza para inicializar A::i, que accede a la variable A::i que se está inicializando.
Si implementamos la función, recibirá una advertencia al compilar el código anterior: la función A::f() se utiliza para inicializar A::i, que accede a la variable A::i que se está inicializando.
Gracias.
No tenemos previsto cambiar el comportamiento
Entonces contradice su concepto de que una variable se considera declarada cuando la declaración está completa. ¿Por qué lo inventó en primer lugar? Si es así en un caso y diferente en otro
Una buena lengua tiene reglas uniformes, no al revésEntonces contradice su propio concepto de que una variable se considera declarada cuando la declaración está completa. ¿Por qué lo inventó en primer lugar? Si es así en un caso y diferente en otro
Una buena lengua tiene reglas uniformes, no al revésSoy un ignorante total, pero no se me habría ocurrido (int i = i) aunque hubiera bebido demasiado....... 8(
Soy un ignorante total, pero no se me habría ocurrido esto (int i = i) aunque hubiera bebido demasiado....... 8(
¿Y cuál es la principal diferencia con el ejemplo original? Elimina las cosas innecesarias y lo conseguirás:
Sólo que allí hay muchos hilos y aquí sólo uno.
Si no hay error de compilación no debería haber ninguno aquí también (y viceversa), de lo contrario es un lío
Entonces contradice su propio concepto de que una variable se considera declarada cuando la declaración está completa. ¿Por qué lo inventó en primer lugar? Si es así en un caso y diferente en otro
Una buena lengua tiene reglas uniformes, no al revés¿Cuál es la diferencia fundamental con el ejemplo original? Quita lo que sobra y ya lo tienes:
Sólo que hay muchas líneas allí, y sólo una aquí
Si no hay error de compilación no debería haberlo aquí también (y viceversa), de lo contrario es un lío.
Te equivocas, no es lo mismo.
La descripción de una variable estática en una clase es su pre-definición (similar a la pre-definición de una función o clase), pero la ubicación, de hecho, sólo indica al compilador dónde se almacenará la variable en la memoria y cuándo debe ser inicializada