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;
};
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