 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Babak Pourat Guest
|
Posted: Fri Jan 27, 2006 8:32 pm Post subject: volatile Methode |
|
|
Hallo,
ich bin gerade in der MSDN über folgenden satz gestolpert.
"It is an error to pass a const object to a member function that is not
const. Similarly, it is an error to pass a volatile object to a member
function that is not volatile."
Mir ist noch in keinem Buch eine volatile Methode begegnet.
Findet sie sich in der C++-Norm?
Gruß
Babak
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Markus Moll Guest
|
Posted: Fri Jan 27, 2006 9:37 pm Post subject: Re: volatile Methode |
|
|
Hallo
Babak Pourat wrote:
| Quote: | Mir ist noch in keinem Buch eine volatile Methode begegnet.
Findet sie sich in der C++-Norm?
|
Ja.
Allerdings hab ich sie bisher noch nicht gebraucht.
Gruß
Markus
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Stefan Reuther Guest
|
Posted: Fri Jan 27, 2006 10:56 pm Post subject: Re: volatile Methode |
|
|
Babak Pourat wrote:
| Quote: | Mir ist noch in keinem Buch eine volatile Methode begegnet.
Findet sie sich in der C++-Norm?
|
Ja.
Allerdings wirst du aller Wahrscheinlichkeit mit einem volatilen
C++-Objekt nicht glücklich werden. De facto taugt volatile nur für
eingebaute Datentypen und Aggregate davon. Sobald du ein "echtes" Objekt
verwenden willst, musst du auf einmal alle benötigten Memberfunktionen
volatile machen. Spätestens, wenn du dann zu einen Member vom Typ
'std::string' o.ä. vorgedrungen bist, hast du dann ein Problem, weil der
diese Members nämlich nicht hat. Und Kopieren ist auch nicht, weil es
keinen Kopierkonstruktor gibt, der 'volatile std::string&' nimmt.
Stefan
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Martin Winkler Guest
|
Posted: Fri Jan 27, 2006 11:37 pm Post subject: Re: volatile Methode |
|
|
Babak Pourat wrote:
| Quote: | Hallo,
ich bin gerade in der MSDN über folgenden satz gestolpert.
"It is an error to pass a const object to a member function that is not
const. Similarly, it is an error to pass a volatile object to a member
function that is not volatile."
Mir ist noch in keinem Buch eine volatile Methode begegnet.
Findet sie sich in der C++-Norm?
|
Hier geht es um den Unterschied zwischen const- und nicht-const-Methoden.
Auf const-Objekte dürfen nur const-Methoden aufgerufen werden. "Volatile"
Methoden sind die, die nicht als const deklariert sind.
Gruß
Martin
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Babak Pourat Guest
|
Posted: Sat Jan 28, 2006 1:45 am Post subject: Re: volatile Methode |
|
|
Martin Winkler wrote:
| Quote: | Babak Pourat wrote:
"It is an error to pass a const object to a member function that is
not const. Similarly, it is an error to pass a volatile object to a
member function that is not volatile."
Hier geht es um den Unterschied zwischen const- und
nicht-const-Methoden. Auf const-Objekte dürfen nur const-Methoden
aufgerufen werden. "Volatile" Methoden sind die, die nicht als const
deklariert sind.
|
Wenn es wäre ist wie Du es interpretierst, dann wäre es verboten auf
nicht-const-Objekte const-Methoden anzuwenden, aber das ist, soweit ich
weiss, erlaubt.
Babak
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Falk Tannhäuser Guest
|
Posted: Sat Jan 28, 2006 2:32 am Post subject: Re: volatile Methode |
|
|
Babak Pourat wrote:
| Quote: | Mir ist noch in keinem Buch eine volatile Methode begegnet.
Findet sie sich in der C++-Norm?
|
Ja, siehe § 9.3.1/3. Im Typsystem von C++ verhält sich
"volatile" ganz ähnlich wie "const", oft wird in der Norm
daher von "cv-qualifiers" gesprochen (§ 7.1.5.1).
Wie bereits gesagt wurde, wird "volatile" für komplexere
Objekte (insbesondere solche, deren Klassentypen Member-
funktionen besitzen) in der Praxis höchst selten verwendet.
Andrei Alexandrescu hat vor einiger Zeit jedoch mal eine
Anwendung für Multithreading-Programmierung vorgeschlagen
<http://www.cuj.com/documents/s=7998/cujcexp1902alexandr/>,
wobei "volatile" nicht aufgrund seiner üblichen Semantik
(Optimierungen unterbinden) benutzt wird, sondern nur
für Typüberprüfungen zur Übersetzungszeit.
MfG
Falk
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Thomas Maeder Guest
|
Posted: Sat Jan 28, 2006 2:48 am Post subject: Re: volatile Methode |
|
|
Martin Winkler <martin_winkler (AT) gmx (DOT) de> writes:
| Quote: | Hier geht es um den Unterschied zwischen const- und nicht-const-Methoden.
Auf const-Objekte dürfen nur const-Methoden aufgerufen werden. "Volatile"
Methoden sind die, die nicht als const deklariert sind.
|
Nein. Volatile Methoden, sind die, die volatile deklariert sind.
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Rolf Magnus Guest
|
Posted: Sat Jan 28, 2006 2:48 am Post subject: Re: volatile Methode |
|
|
Falk Tannhäuser wrote:
| Quote: | Babak Pourat wrote:
Mir ist noch in keinem Buch eine volatile Methode begegnet.
Findet sie sich in der C++-Norm?
Ja, siehe § 9.3.1/3. Im Typsystem von C++ verhält sich
"volatile" ganz ähnlich wie "const", oft wird in der Norm
daher von "cv-qualifiers" gesprochen (§ 7.1.5.1).
Wie bereits gesagt wurde, wird "volatile" für komplexere
Objekte (insbesondere solche, deren Klassentypen Member-
funktionen besitzen) in der Praxis höchst selten verwendet.
|
Ich habe es mal gebraucht. Es ging dabei um einen FIFO für einen
Mikrocontroller, der manchmal auch in Interrupt-Routinen verwendet wird.
Ohne volatile werden die Zugriffe auf die Queue teilweise wegoptimiert.
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Ernst Murnleitner Guest
|
Posted: Sat Jan 28, 2006 6:35 pm Post subject: Re: volatile Methode |
|
|
| Quote: | Auf const-Objekte dürfen nur const-Methoden
aufgerufen werden. "Volatile" Methoden sind die, die nicht als const
deklariert sind.
Wenn es wäre ist wie Du es interpretierst, dann wäre es verboten auf
nicht-const-Objekte const-Methoden anzuwenden, aber das ist, soweit ich
weiss, erlaubt.
|
Das hat er aber nicht so geschrieben: wenn für const Objekte nur const
Methoden verwendet werden dürfen, dann heisst das ja noch nicht, dass
auf nicht-const Objekte keine const Methoden erlaubt sind.
Ernst
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Markus Moll Guest
|
Posted: Sat Jan 28, 2006 7:00 pm Post subject: Re: volatile Methode |
|
|
Hallo
Ernst Murnleitner wrote:
| Quote: | Das hat er aber nicht so geschrieben: wenn für const Objekte nur const
Methoden verwendet werden dürfen, dann heisst das ja noch nicht, dass
auf nicht-const Objekte keine const Methoden erlaubt sind.
|
Der vom OP zitierte Text würde dann aber genau das aussagen.
Gruß
Markus
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
kanze Guest
|
Posted: Mon Jan 30, 2006 1:01 pm Post subject: Re: volatile Methode |
|
|
Rolf Magnus wrote:
| Quote: | Falk Tannhäuser wrote:
Babak Pourat wrote:
Mir ist noch in keinem Buch eine volatile Methode begegnet.
Findet sie sich in der C++-Norm?
Ja, siehe § 9.3.1/3. Im Typsystem von C++ verhält sich
"volatile" ganz ähnlich wie "const", oft wird in der Norm
daher von "cv-qualifiers" gesprochen (§ 7.1.5.1).
Wie bereits gesagt wurde, wird "volatile" für komplexere
Objekte (insbesondere solche, deren Klassentypen Member-
funktionen besitzen) in der Praxis höchst selten verwendet.
Ich habe es mal gebraucht. Es ging dabei um einen FIFO für
einen Mikrocontroller, der manchmal auch in Interrupt-Routinen
verwendet wird. Ohne volatile werden die Zugriffe auf die
Queue teilweise wegoptimiert.
|
Es hängt vom Anwendungsbereich ab. Unter Windows oder Unix hat
volatile praktisch keine Bedeutung, außer auf einem
sig_atomic_t. Auf Mikrocontroller dagegen wohl. Immerhin frage
ich mich, ob der "volatile" auf dem Objekt gehört, oder auf den
Mitgliedern des Objektes.
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|