C++-Lernen const, constexpr, volatile

Vorwort

const, constexpr und volatile sind Schlüsselwörter, die zum Ändern von Variablen und Typen in C++ verwendet werden

Text

Sie werden für unterschiedliche Zwecke verwendet:

const (Konstante):
Mit const wird eine Konstante deklariert, die angibt, dass der Wert der Variablen nicht geändert werden kann.
Es kann auf Variablen, Zeiger, Referenzen, Mitgliedsfunktionen und Klassenobjekte angewendet werden.
Konstante Variablen müssen zum Zeitpunkt der Deklaration initialisiert werden.
Eine const-Memberfunktion verspricht, den Zustand des Objekts nicht zu ändern.
Const-Zeiger und Const-Referenzen können zum Übergeben von Parametern verwendet werden, um sicherzustellen, dass die Funktion den übergebenen Wert nicht ändert.
Beispiel:

const int x = 5; // 声明一个常量整数
const double PI = 3.14159; // 声明一个常量双精度浮点数

void foo(const int& val) {
    // val 是一个常量引用,不能在函数中修改它
}

constexpr (konstanter Ausdruck):
constexpr wird verwendet, um einen konstanten Ausdruck zu deklarieren, der zur Kompilierungszeit ausgewertet wird.
Eine constexpr-Variable muss zum Zeitpunkt der Deklaration mit einem konstanten Ausdruck initialisiert werden und kann zur Auswertung zur Kompilierungszeit verwendet werden.
constexpr-Funktionen können zur Kompilierungszeit ausgewertet und zum Generieren von Konstanten zur Kompilierungszeit verwendet werden.
constexpr verbessert die Leistung, da der Compiler Berechnungen zur Kompilierungszeit statt zur Laufzeit durchführen kann.
Beispiel:

constexpr int square(int x) {
    return x * x;
}

constexpr int result = square(5); // 编译时计算

const int size = 10;
int arr[size]; // 使用 const 常量来定义数组大小

flüchtig (flüchtig):
Mit flüchtig wird dem Compiler mitgeteilt, dass der Wert der Variablen während der Ausführung des Programms durch externe Faktoren geändert werden kann und daher nicht optimiert werden sollte.
Wird normalerweise zur Beschreibung von Hardwareregistern, gemeinsam genutzten Variablen in der Multithread-Programmierung usw. verwendet.
volatile verhindert, dass der Compiler das Lesen und Schreiben von Variablen optimiert, um sicherzustellen, dass jeder Zugriff wahr ist.
Beispiel:

volatile int sensorValue; // 用于描述外部传感器值

void readSensor() {
    sensorValue = /* 从传感器读取值 */;
}

int main() {
    while (true) {
        readSensor();
        // 使用 sensorValue 进行操作,编译器不会优化读取操作
    }
}

Zusammenfassend wird const zum Deklarieren von Konstanten verwendet, constexpr zum Deklarieren von Konstanten zur Kompilierungszeit und volatile wird verwendet, um dem Compiler mitzuteilen, dass sich der Wert einer Variablen unter dem Einfluss externer Faktoren ändern kann. Diese Schlüsselwörter haben in C++ unterschiedliche Zwecke und Sie können sie entsprechend Ihren spezifischen Anforderungen verwenden.

おすすめ

転載: blog.csdn.net/wniuniu_/article/details/132721733