Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Zur Orientierung im Compilermeldungs-Dschungel...

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
30.08.2006, 22:38 Uhr
Yadgar



High!

Kann ich mich darauf verlassen, dass von einer als const deklarierten Methode einer Klasse aus nur Methoden aufgerufen werden können, die selbst wiederum const sind, andernfalls gibt es eine Fehlermeldung mit "passing ... discards qualifiers"?

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
31.08.2006, 07:36 Uhr
ao

(Operator)


Solche Fragen sollte man ohne Anwalt nicht beantworten, darum von mir nur: Im Prinzip ja. Um was gehts denn konkret?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
31.08.2006, 08:37 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

Solche Fragen sollte man ohne Anwalt nicht beantworten


Als ob ein Anwalt das könnte. Da hörst du doch auch im besten Falle eine "Das kommmt darauf an". Ein "Im Prinzip ja" ist da schon fast zu weit aus dem Fenster gelehnt"
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
31.08.2006, 08:57 Uhr
ao

(Operator)



Zitat von Yadgar:
Kann ich mich darauf verlassen, ...

Du kannst dich drauf verlassen, dass eine const-Methode ihr this-Objekt nicht verändert (1). Mit fremden Objekten kann die Methode anstellen, was sie will, d.h. sie kann an anderen Objekten auch Methoden aufrufen, die nicht const sind.

Ich glaub es wird Zeit für ein Beispiel:


C++:
void MyClass::DoSomething (MyClass & other) const
{
    // hier darf nichts getan werden, was *this verändert,
    // d.h. kein Schreibzugriff auf Member, kein Aufruf von
    // nicht-const Methoden und kein Weiterreichen
    // als nicht-const-Referenz, sonst Fehler.

    // Sowas hier ist aber legal:
    other.ChangeEverything ();
}


(1) Es sei denn, die Methode lügt, d.h. castet intern das const-Attribut weg. Aber das wäre schon ein ziemlicher Schweinkram.

Dieser Post wurde am 31.08.2006 um 09:05 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
31.08.2006, 10:27 Uhr
stephanw
localhorst


Nur als kleine Ergänzung und um die Verwirrung perfekt zu machen: const-Deklaration einer Methode bedeutet logische Konstantheit für den Aufrufer der Methode, nicht immer auch physische Konstantheit. Wenn eine Member-Variable als "mutable" deklariert wird, kann sie auch von einer const-Methode geändert werden. Das ermöglicht z.B. Caching von Berechnungen etc. .
--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: