Dabei ist es unerheblich, ob die Methoden etwas ändern.
? Verstehe ich jetzt nicht.
Das wird doch gerade verhindert durch const.
versuche mal
class MyClass2 {
public:
int getVal() const {
val *= 2; // das sollte nicht möglich sein
return val;
}
private:
int val = 10;
};
Das Original - getVal() ändert nichts am this - Objekt, sollte daher als const deklariert werden. Dann kann man auch Instanzen dieser Klasse als const deklarieren, ohne dass man sich die Warnung "discards qualifiers" einfängt.
Aber du hast recht, @Doc, wenn man einmal anfängt, ordentlich alles mit const zu deklarieren, zieht das gern einen elenden Rattenschwanz nach sich, besonders und solange in verwendeten Funktionen nicht alles const ist, was const sein sollte.
Es gab mal ein Arduino, da waren nochnichtmal PROGMEM-Zugriffe const, wenn ich mich recht erinnere.
Und bei Zeigern muss man gut zwischen einem const Zeiger und einem Zeiger auf const unterscheiden.
Das Ganze kann man gern mit "Schwer lesbar" verwechseln.