Ich habe ein Buch, in dem etwas geschrieben steht wie:
class Foo
{
public:
int Bar(int random_arg) const
{
// code
}
};
Was bedeutet das?
Ich habe ein Buch, in dem etwas geschrieben steht wie:
class Foo
{
public:
int Bar(int random_arg) const
{
// code
}
};
Was bedeutet das?
Die Funktion kann ihre Parameter nicht über den Zeiger/Verweis ändern, den Sie ihr gegeben haben.
Ich gehe jedes Mal auf diese Seite, wenn ich darüber nachdenken muss:
http://www.parashift.com/c++-faq-lite/const-correctness.html
Ich glaube, es gibt auch ein gutes Kapitel in Meyers' "More Effective C++".
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
33 Stimmen
Es ändert die Art der
this
deFoo* const
inconst Foo* const
. Das hat Folgen.0 Stimmen
Ich verstehe Ihre Bearbeitung nicht. Was genau wollen Sie wissen? Ob die Deklaration von zwei Variablen des Typs Foo mehrere Funktionsinstanzen von Bar erzeugen wird?
0 Stimmen
@inflagranti: Ja, genau das will ich wissen.
0 Stimmen
Dann lautet die Antwort nein. Und warum sind Sie davon ausgegangen, dass es so sein würde?
0 Stimmen
Ein Freund erzählte mir irgendwann mal... Aber ohne den const-Tag, würde es?
8 Stimmen
@aPoC-Funktionen (oder hier Methoden) existieren nur einmal "im Speicher" (als
static
oder nicht, das spielt keine Rolle). Ihnen wird ein versteckter Parameter übergebenthis
der ein Zeiger auf die aufrufende Instanz ist.