Freigeben über


Konstante Werte

Das const-Schlüsselwort gibt an, dass der Wert einer Variablen ist konstant und wird der Compiler angewiesen, den Programmierer ändert er zu verhindern.

// constant_values1.cpp
int main() {
   const int i = 5;
   i = 10;   // C3892
   i++;   // C2105
}

In C++ können Sie das const-Schlüsselwort anstelle der #define-Präprozessordirektiven verwenden, um konstante Werte zu definieren.Die Werte, die const definiert sind, unterliegen Typüberprüfung und können anstelle von konstanten Ausdrücken verwendet werden.In C++ können Sie die Größe eines Arrays mit einer const-Variablen angeben:

// constant_values2.cpp
// compile with: /c
const int maxarray = 255;
char store_char[maxarray];  // allowed in C++; not allowed in C

In C externer Bindung mit konstanten Werten führen. Daher können sie nur in den Quelldateien stehen.In C++ führen konstante Werte in interner Bindung, die ihnen ermöglicht, dass in den Headerdateien angezeigt wird.

Das const-Schlüsselwort kann in den Zeiger Deklarationen auch verwendet werden.

// constant_values3.cpp
int main() {
   char *mybuf = 0, *yourbuf;
   char *const aptr = mybuf;
   *aptr = 'a';   // OK
   aptr = yourbuf;   // C3892
}

Ein Zeiger auf eine Variable, die als const deklariert wird, kann nur auf einen Zeiger zugewiesen werden, der auch als constdeklariert ist.

// constant_values4.cpp
#include <stdio.h>
int main() {
   const char *mybuf = "test";
   char *yourbuf = "test2";
   printf_s("%s\n", mybuf);

   const char *bptr = mybuf;   // Pointer to constant data
   printf_s("%s\n", bptr);
   
   // *bptr = 'a';   // Error
}

Output

test
test

Sie können Zeiger auf den konstanten Daten als Funktionsparameter verwenden, um die Funktion beim Ändern eines Parameters zu verhindern, der über einen Zeiger übergeben wird.

Für Objekte, die als constdeklariert sind, können Sie nur Memberfunktionen konstanteaufrufen.Dadurch wird sichergestellt, dass das konstante Objekt nicht geändert wird.

birthday.getMonth();    // Okay
birthday.setMonth( 4 ); // Error

Sie können keine Konstante oder Zeichenfolgenkonstante für Memberfunktionen aufrufen entweder einen nicht konstanten Objekt.Sie können eine Memberfunktion mit dem const auch - Schlüsselwort überladen. Dadurch können eine andere Version der für die konstanten und nicht konstanter Objekte Funktion, die aufgerufen werden soll.

Sie können Konstruktoren oder Destruktoren mit dem const-Schlüsselwort nicht deklarieren.

357syhfh.collapse_all(de-de,VS.110).gifC- und C++-const Unterschiede

Wenn Sie eine Variable als const in Wechselstrom-Quellcodedatei deklarieren, sodass Sie vorgehen:

const int i = 2;

Sie können diese Variable in einem anderen Modul verwendet werden, wie folgt:

extern const int i;

Wenn jedoch das gleiche Verhalten in C++ abzurufen, müssen Sie die const wie Variablen deklariert werden:

extern const int i = 2;

Wenn Sie eine Variable in extern Quellcodedatei Ein C++-Compiler für die Verwendung in Wechselstrom-Quellcodedatei deklarieren möchten, verwenden Sie:

extern "C" const int x=10;

Namensergänzung vom C++-Compiler zu verhindern.

Siehe auch

Referenz

const-Feld (C++)

Konstante Memberfunktionen