#include <stdio.h>
class C
{
public:
static int i;
static int j;
};
int i = 10;
int C::i = 20;
int C::j = i + 1;
int main()
{
printf("%d", C::j);
return 0;
}
Qual è il valore di: C :: jVariabili statiche di inizializzazione Quiz
Stavo leggendo un quiz ++ c e sono imbattuto alla seguente domanda. Ho pensato che la risposta fosse 11
.
int C::j = i + 1;
Poiché si accede al i
non statica che è 10? Quindi, ho pensato che 11
dovrebbe essere la risposta?
Ho compilato e eseguito questo codice tramite Visual Studio e stampa 21
. Ciò mi confonde. Qualcuno può spiegare perché questo sta accadendo? Cosa mi manca?
Uno dei motivi per cui odio C++. In un "mondo ideale", se dici "io", ottieni "io". Invece del linguaggio stupido che indovina e ti dà invece "C :: i". Credo che la soluzione alternativa - se si desidera "10" - è qualificare 'int C :: j = :: i + 1;'. – paulsm4
Sì, sapevo che avrei potuto usare :: i per essere esplicito ma non pensavo di averne bisogno. – marsh
La lingua non è una seconda ipotesi. Questo comportamento è uguale al comportamento di definire funzioni fuori linea. All'interno del corpo di una funzione di 'C' non vorresti digitare' C :: i' ogni volta che intendi il membro, vero? – Brian