|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Aug 2001
Città: Monte di Procida
Messaggi: 323
|
Che significa questa dichiarazione in C++?
Ho trovato questa funzione membro di una classe ma non capisco il significato della parola const
int getDen() const; non se ne potrebbe fare a meno? A cosa serve? Un grazie anticipato a chi mi darà una risposta. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Significa che una chiamata a quel metodo non modifica l'oggetto, quindi può essere fatta quando l'oggetto è dichiarato const:
void foo (const MyClass &Obj) { Obj.getDen(); } Se getDen non fosse dichiarata const, sarebbe errato (o se il compilatore è buono ti segnala almeno un warning).
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Aug 2001
Città: Monte di Procida
Messaggi: 323
|
Quella funzione deve essere semplicemente usata per leggere i valori di due sttributi privati di una classe. Il const se ho capito bene quindi mi dice che questi due valori non possono essere modificati?
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Il compilatore non sa se e quali valori devi leggere. Con const indichi semplicemente che quella funzione non effettuerà modifiche alla classe. Qualsiasi modifica che una funzione const tenti di fare alla propria classe verrà segnalata con un errore in fase di compilazione. Tutto ciò è logico e coerente.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Aug 2001
Città: Monte di Procida
Messaggi: 323
|
Ho capito, però ti vorrei far notare una cosa. Nel mio caso la dichiarazione è di questo tipo:
int getDen() const; mentre nel tuo caso sarebbe così: void foo (const MyClass). Le cose non sono diverse? |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Il mio era un esempio di un caso dove viene invocato un metodo di una classe costante.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Aug 2001
Città: Monte di Procida
Messaggi: 323
|
Ho capito! Grazie per l'aiuto!
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:26.



















