const

Hallo zusammen

Kleine frage: Vorausgesetzt ich habe eine Klasse und dort eine Klassenmethode die im Bereich public folgendermassen definiert ist:
Code:
void func(char *buf, int iBufLen) const;

Was heisst jetzt das const am Ende dieser Zeile?
Müssen Instanzen dieser Klasse als const definiert sein? oder was soll das?!

--Keymaker
 
HI

Nehmen wir an wir würden eine konstante Klasse definieren: "const Klasse kl"

Nehmen wir ferner an, wir hätten eine Methode "ausgabe" ohne das const am Ende.

Der Aufruf "kl.ausgabe()" riefe dann eine Warnung oder Fehlermeldung aus.

Wenn du aber in der Deklaration der Methode "ausgabe" ein const einfügst: -> "void ausgabe() const" erhält die Methode das Privileg, für konstante und nicht konstante Objekte aufgerufen werden zu können.

Ein const-Qualifizierer wird auch beim Überladen von Methoden ausgewertet.

Beispiel:

void ausgabe(); 1
void ausgabe() const; 2

Der Compiler erkennt an der EIgenschaft des Objekts, welche Methode er aufrufen soll.

also:
Code:
const KLasse kl;
kl.ausgabe();     // Aufruf der 2. Methode
Klasse kl;
kl.ausgabe();     // Aufruf der 1. Methode
 
als const deklarierte methoden können auch keine elementvariablen verändern.

Code:
//Erzeugt einen Compilier-Fehler


class klasse
{
public:
	void elementfunktion() const
	{
		elementvariable = 6;
	}
private:
	int elementvariable;
};

int main()
{
	klasse objekt;
	objekt.elementfunktion();

	return 0;
}
 
Zurück
Oben