const vor dem Funktion

Don_Pazo

Erfahrenes Mitglied
Hallo

eine Funktion
Code:
int Ort::ausgabe()const {
// code
}
ist eine constante Funktion die nichts von der Klasse Ort ändern darf.

Was macht aber eine Funktion die so aussiet ?
Code:
const int Ort::ausgabe(){
// code
}
bzw.
Code:
const int& Ort::ausgabe(){
// code
}

Ich verstehe nicht was ist da constant ?
 
Hi.
Don_Pazo hat gesagt.:
Hallo

eine Funktion
Code:
int Ort::ausgabe()const {
// code
}
ist eine constante Funktion die nichts von der Klasse Ort ändern darf.

Was macht aber eine Funktion die so aussiet ?
Code:
const int Ort::ausgabe(){
// code
}
bzw.
Code:
const int& Ort::ausgabe(){
// code
}

Ich verstehe nicht was ist da constant ?
Ganz einfach, der Rückgabewert. Das hat im Grunde bei einer Rückgabe (von z.B. integralen Typen) wo der Wert sowieso als Kopie zurückgegeben wird recht wenig Sinn, aber bei deinem zweiten Beispiel wird ja eine konstante Referenz auf einen Integer zurückgegeben und den kann man dann (normalerweise) nur an eine als konstant deklarierte Variable zuweisen. So kann man den Wert der referenzierten Variablen nicht ändern (wenn man z.B. eine Referenz auf eine Membervariable der Klasse zurückgeben will).

Bei Zeigern wird es nochmal etwas komplizierter, denn man kann spezifizieren, dass entweder der Zeiger konstant sein soll, oder der Wert auf den der Zeiger zeigt, oder beides:
Code:
const int* const Ort::ausgabe() {...}

Gruß
 
Zurück