Kann ich Membervariable als const in der Klasse von C++ deklarieren? Wenn ja, wie?Kann ich Membervariable als const in der Klasse von C++ deklarieren? Wenn ja, wie?
8
A
Antwort
18
Sie können - Sie setzen Const vor dem Typnamen.
class C
{
const int x;
public:
C() : x (5) { }
};
3
Sicher, der einfachste Weg ist, wie diese, wenn der Wert die gleiche über alle Instanzen Ihrer Klasse sein wird:
class X
{
public:
static const int i = 1;
};
Oder wenn Sie nicht möchten, dass es statisch:
class X
{
public:
const int i;
X(int the_i) : i(the_i)
{
}
};
8
Sie erklären es so, als ob Sie kein Mitglied wären. Beachten Sie, dass die Deklaration einer Variablen als const erhebliche Auswirkungen auf die Art und Weise hat, in der die Klasse verwendet wird. Sie werden definitiv einen Konstruktor brauchen, um es zu initialisieren:
class A {
public:
A(int x) : cvar(x) {}
private:
const int cvar;
};
Verwandte Themen
- 1. Swift: Wie eine statische Membervariable deklarieren, die eine Klasse
- 2. eine Methode als eine Membervariable einer Klasse in C# Speichern
- 3. Karte nicht als const deklarieren und zuweisen
- 4. deklarieren eine Reihe von const Ints in C++
- 5. Wie kann ich eine Klasse Eigenschaft als Aufzählungstyp deklarieren
- 6. Gibt es Vorteile in C const Membervariable mit ++
- 7. Statische Membervariable einer unterklasse Klasse
- 8. Eine Funktion in C++ - Klasse neu deklarieren
- 9. Wo const in der Klasse von Objective C
- 10. Kann ich in C++ eine Nicht-Member-Funktion constant deklarieren?
- 11. Wenn Klasse A seine Konstruktionsparameter ändert, kann ich const A mit const Parametern initialisieren?
- 12. Deklarieren einer Const-Variable in R
- 13. Preincrement schneller als posincrement in C++ - wahr? Wenn ja, warum?
- 14. Wie kann ich XmlSerializer Bools als Ja/Nein zu codieren?
- 15. Wie bekomme ich das Äquivalent von C++ "const" in C#?
- 16. Wie oft deklarieren Sie Ihre Funktionen als const?
- 17. Wie kann ich einfügen Schlüssel als eine Klasse in der Karte STL in C++
- 18. Deklarieren einer Klasse als ein Mitglied von ihr
- 19. Eine Membervariable in C++ überschreiben
- 20. Kann ich Caching in MVC implementieren, wenn ja wie?
- 21. Deklarieren von Variablen innerhalb von Funktionen einer Klasse in C++
- 22. Kann ich ein Wörterbuch mit dynamischem Array als Werttyp deklarieren?
- 23. Kann der Quellcode der Baugruppe angezeigt werden? Wenn ja, wie?
- 24. Deklarieren flüchtiger Iterator in C++
- 25. Wie kann ich eine Klassenvariable als Fließkomma in Moose deklarieren?
- 26. Wie erkennt man, ob tatsächlich eine bestimmte Membervariable in der Klasse existiert?
- 27. Wie kann ich ein nicht beschreibbares Array in C# deklarieren?
- 28. Wie erreicht man const-Korrektheit in C#?
- 29. C# deklarieren Unterklasse als Typ Superklasse
- 30. Deklarieren von Strukturen innerhalb von Funktionen in C
Das sollte Ihnen einen anderen Fehler geben, wie Sie es erklärten, ohne es zu definieren. Sie benötigen ein "int X :: i;" irgendwo. –
@James - nicht so, wenn der Compiler aktuell genug ist, um inline statische const-Member zu unterstützen, die dort initialisiert werden, wo sie deklariert sind. –
@James: Ich glaube nicht, dass das für statische const int gilt - Sie brauchen eigentlich keine separate Definition, weil der Compiler sie als eine wahre Konstante behandelt. – RichieHindle