Posso dichiarare variabile membro come const nella classe di C++? Se sì, come?Posso dichiarare la variabile membro come const nella classe di C++? Se sì, come?
8
A
risposta
18
Puoi - puoi mettere const davanti al nome del tipo.
class C
{
const int x;
public:
C() : x (5) { }
};
3
Certo, il modo più semplice è come questo se il valore sarà lo stesso in tutte le istanze della classe:
class X
{
public:
static const int i = 1;
};
Oppure, se non si vuole che statica:
class X
{
public:
const int i;
X(int the_i) : i(the_i)
{
}
};
8
Si dichiara come si farebbe se non fosse un membro. Nota che dichiarare una variabile come const avrà effetti considerevoli sul modo in cui la classe viene usata. Avrai sicuramente bisogno di un costruttore per inizializzarlo:
class A {
public:
A(int x) : cvar(x) {}
private:
const int cvar;
};
Problemi correlati
- 1. Uso variabile di C++ Static Const membro
- 2. Perché non posso fare nella classe inizializzata `const const std :: STRING` un membro statico
- 3. Come dichiarare un mem_fn C++ (membro_funzione) nella dichiarazione di funzione?
- 4. PHP: perché non posso dichiarare una variabile const statica?
- 5. C++ Inizializza la classe base 'const int nella classe derivata?
- 6. Come dichiarare una variabile membro costante statica di una classe che comporta alcuni semplici calcoli?
- 7. Flusso C++ come variabile membro
- 8. Classe C++ con variabile membro modello
- 9. Come dichiarare e implementare una funzione membro const e inline?
- 10. const inizializzazione di matrice membro della classe
- 11. java: devo dichiarare volatile la mia variabile membro listener condivisa?
- 12. Come chiamare la funzione membro const di un'altra classe tramite un membro std :: unique_ptr
- 13. Come inizializzare un membro const const in C++?
- 14. la variabile membro python di istanza funziona come variabile membro e alcuni funzionano come variabile statica
- 15. Come posso migliorare questo design che mi obbliga a dichiarare una funzione membro const e dichiarare variabili mutabili?
- 16. C++: una classe astratta come membro
- 17. Come posso inizializzare una variabile const di una classe base in un costruttore di classi derivate in C++?
- 18. Come dichiarare un membro statico in una classe Powershell 5?
- 19. Classe membro statica: dichiarare la classe private e il membro della classe package-private?
- 20. Come definire un membro const statico?
- 21. Come accedere alle variabili membro nella classe di stringa STL?
- 22. const &, & e && specificazioni per le funzioni di membro in C++
- 23. C++ variabili membro di classe privata non compaiono nella documentazione
- 24. ASP.NET C# Deve dichiarare la variabile scalare
- 25. Dichiarare la variabile enum nel bean Java
- 26. come dichiarare una classe PHP con un nome di variabile
- 27. inizializzazione di membro di riferimento const nella lista di inizializzazione
- 28. C++ lambda - variabile membro di cattura
- 29. Posso decodificare un'eccezione C++ da un'eccezione di Windows SEH? (? E se sì, come)
- 30. Come posso dichiarare una variabile di classe come punto mobile in Moose?
Questo dovrebbe darti un errore diverso, come hai dichiarato io, senza definirlo. Avrai bisogno di un "int X :: i;" da qualche parte. –
@James - non è così, se il compilatore è aggiornato abbastanza da supportare i membri const statici integrati che sono inizializzati dove sono dichiarati. –
@James: Non credo che sia vero per stat const const - non hai realmente bisogno di una definizione separata perché il compilatore la considera una vera costante. – RichieHindle