View Single Post
Old 06-11-2014, 16:38   #2
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12843
In soldoni in C una stringa è un'array di char... MA c'è un ma...

Codice:
void main(void)
{
    char stringa1[] = "pippo";

    char* stringa2 = "pippo";

    printf("Length: %u\n", sizeof(stringa1));  // stampa 6 (la lunghezza di pippo + terminatore)

    printf("Length: %u\n", sizeof(stringa1));  // stampa 4 o 8 (la dimensione di un ptr a 32 o 64 bit)

    return 0;
}
Penso che quel costruttore sia in grado di accettare solo stringhe dichiarate nel primo modo in maniera da riconoscere la dimensione a tempo di compilazione.

Dimensione che il compilatore usa come parametro implicito per costruire una funzione "concreta" a partire dal template.

(In pratica puoi omettere la variabile template quando chiami il costruttore perché viene "inferita" dal parametro)

C'è da dire che è la prima volta che vedo:

Codice:
... funzione( tipo (&a)[N] )
Se usi a[N] anziché (&a)[N] mi sa che non funziona...

C/C++ riescono sempre a sorprendere .

Ultima modifica di WarDuck : 06-11-2014 alle 16:42.
WarDuck è offline   Rispondi citando il messaggio o parte di esso