capypad
0 Tage Serie
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
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