cpp / beginner
Snippet
Konstante Mitgliedsfunktionen zum Datenschutz
Konstante Mitgliedsfunktionen (auch Const-Korrektheit genannt) versprechen keine Mitgliedsvariablen der Klasse zu verändern. Das 'const' Schlüsselwort nach dem Funktionsnamen erzwingt diesen Vertrag zur Kompilierzeit. Wenn du versuchst, ein Mitglied innerhalb einer const-Funktion zu ändern, wird der Code nicht kompilieren. Dies schützt deine Daten und macht den Code einfacher zu verstehen, indem klar angezeigt wird, welche Methoden 'schreibgeschützt' sind.
snippet.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>#include <string>class Circle {private:double radius;public:Circle(double r) : radius(r) {}double getArea() const {return 3.14159 * radius * radius;}double getCircumference() const {return 2 * 3.14159 * radius;}void setRadius(double r) {if (r > 0) {radius = r;}}};int main() {Circle myCircle(5.0);std::cout << "Area: " << myCircle.getArea() << std::endl;std::cout << "Circumference: " << myCircle.getCircumference() << std::endl;return 0;}
Erklärung
1
double getArea() const {
Konstante Mitgliedsfunktion die liest aber niemals Mitgliedsvariablen verändert
2
return 3.14159 * radius * radius;
Berechnet die Fläche mit dem Radius - liest nur, schreibt nicht
3
void setRadius(double r) {
Nicht-konstante Funktion die absichtlich den Radius verändert
4
if (r > 0) { radius = r; }
Validierungsprüfung bevor die private Radius-Variable geändert wird