C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Wann const?

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German)
View previous topic :: View next topic  
Author Message
Markus Breuer
Guest





PostPosted: Mon Jun 28, 2004 6:44 am    Post subject: Wann const? Reply with quote



Ich habe eine Template-Klasse, in der die Operatoren

T * operator->() { ... }
const T * operator->() const { ... }

überladen sind. Nun rufe ich

template_class->do_something();

auf, wobei die Definition dieser Funktion wie folgt aussieht:

void Foo::do_something( param& ) const;

Beim Aufruf erwarte ich nun, dass der const-Operator aufgerufen wird,
tatsächlich wird aber der non-const Operator aufgerufen. Kann mir jemand
erklären, wo mein Denkfehler ist?

Danke, 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
Martin Kaul
Guest





PostPosted: Mon Jun 28, 2004 8:15 am    Post subject: Re: Wann const? Reply with quote



Markus Breuer wrote:
Quote:
Ich habe eine Template-Klasse, in der die Operatoren

T * operator->() { ... }
const T * operator->() const { ... }

überladen sind. Nun rufe ich

template_class->do_something();

auf, wobei die Definition dieser Funktion wie folgt aussieht:

void Foo::do_something( param& ) const;

Beim Aufruf erwarte ich nun, dass der const-Operator aufgerufen wird,
tatsächlich wird aber der non-const Operator aufgerufen. Kann mir jemand
erklären, wo mein Denkfehler ist?

Die Entscheidung, ob const oder nicht-const hängt nicht von der
Methode ab, die aufgerufen werden soll, sondern vom Objekt, welches
die Methode aufruft.

TemplateClass<MyClass> template_class(.....);
template_class->do_something(); // --> non-const Aufruf

TemplateClass<MyClass> const template_class(.....);
template_class->do_something(); // --> const Aufruf

tschaule
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
Olaf Krzikalla
Guest





PostPosted: Mon Jun 28, 2004 12:51 pm    Post subject: Re: Wann const? Reply with quote



Hi,

Markus Breuer schrieb:
Quote:
Beim Aufruf erwarte ich nun, dass der const-Operator aufgerufen wird,
tatsächlich wird aber der non-const Operator aufgerufen. Kann mir jemand
erklären, wo mein Denkfehler ist?
Die const-Version wird nur verwendet, wenn es nötig ist und nicht - wie

Du wahrsacheinlich annimmst - wenn es möglich ist.


MfG
Olaf Krzikalla

--
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 Breuer
Guest





PostPosted: Mon Jun 28, 2004 9:22 pm    Post subject: Re: Wann const? Reply with quote

Quote:
Die Entscheidung, ob const oder nicht-const hängt nicht von der
Methode ab, die aufgerufen werden soll, sondern vom Objekt, welches
die Methode aufruft.

TemplateClass<MyClass> template_class(.....);
template_class->do_something(); // --> non-const Aufruf

TemplateClass<MyClass> const template_class(.....);
template_class->do_something(); // --> const Aufruf

Danke, genau das hat mir hatte mir gefehlt.

Danke, 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
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German) All times are GMT
Page 1 of 1

 
Jump to:  
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


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.