Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » operatoren überladen, aber wie?

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 ] > 2 <
010
29.05.2006, 19:32 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Okay, tut mir leid. Ich gelobe, mich zu bessern
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
29.05.2006, 19:35 Uhr
(un)wissender
Niveauwart


, mach was du willst.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
30.05.2006, 03:10 Uhr
Hans
Library Walker
(Operator)


Nur mal so nebenher: Das programm von J-jayz-Z aus posting 002 liefert bei mir 2 als Ergebniss. Wenn ich mir den Quelltext ansehe, müsste da aber eigendlich 4 heraus kommen, oder irre ich da?

Hans,
der von C++ nur eine begrenzte Ahnung hat...
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
30.05.2006, 08:39 Uhr
(un)wissender
Niveauwart


Warum? return 2 ist bei mir immer noch 2.
Hans, du solltest mehr schlafen, vor allem nachts.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
31.05.2006, 15:06 Uhr
Hans
Library Walker
(Operator)


@(un)wissender: Sehr witzig!
Aber das beanwortet die Frage nicht. - Ich hab mir die Sache jetzt zwar noch mal genauer angesehen, und eine Idee, wo der (mein) Fehler liegen könnte, aber mehr auch nicht. Also:
In der Definition der Klasse wird der plus-Operator so umdefiniert, das er 2 zurück gibt. So weit, so gut. Dann werden in main() zwei Instanzen der Klasse angelegt, die beide miteinander addiert werden sollen, und das Ergebniss einer Vaiablen zugewiesen. Und da müsste doch vier heraus kommen. Oder ist mein Fehler folgendes: Da es sich ja um Instanzen dieser Klasse handelt, wird nur der überladene Operator ausgeführt, und sonst passiert (fast) nichts?
Wo ich jetzt (beim tippen des oberen Textes) noch mal drüber nachdenke, scheint das der Punkt zu sein, weil ja sonst auch keine Variablen in der Klasse existieren. Aber so ganz klar ist es mir dennoch nicht. Ach ja, ich hab auch gerade kein Buch zur Hand, wo es drin steht.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
31.05.2006, 15:28 Uhr
ao

(Operator)


Hi,

es geht um diese Zeile hier:

C++:
int blubb = bar + bla;

Die kann man auch so schreiben:

C++:
int blubb = bar.operator+(bla);

Und hier sieht man, wieso 2 rauskommt.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
31.05.2006, 15:31 Uhr
(un)wissender
Niveauwart


Ich schreibe es mal um:


C++:
#include <iostream>

class foo {

public:
        int foo::operator+(foo bar)
        {
                return 2;
        }
};

int main(int argc, const char* argv[])
{
        foo bla;
        foo bar;
        int blubb = bar.operator+(bla);
        std::cout << "Ergebniss: " << blubb << std::endl;
        return EXIT_SUCCESS;
}



Ist halt ein normaler Aufruf, operator+ wird nur einmal aufgerufen und das ist halt 2.


Bearbeitung:

Ups zu langsam...


--
Wer früher stirbt ist länger tot.

Dieser Post wurde am 31.05.2006 um 15:31 Uhr von (un)wissender editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
01.06.2006, 02:30 Uhr
Hans
Library Walker
(Operator)


Hi,

also der Punkt ist, das der Operator nur einmal aufgerufen wird. Gut. Nur so, wie ihr das jetzt umgeschrieben habt, versteh ich im Moment zumindest noch weniger...

Hans,
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 01.06.2006 um 02:32 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
01.06.2006, 09:41 Uhr
(un)wissender
Niveauwart


Abstahiere einfach mal vom operator+. Das ist eine ganz normale Funktion. Die wird für ein Objekt aufgerufen, und als Parameter erhält es ein Objekt desselben Typs, der aber wie das Objekt selber ignoriert wird. Vielleicht schreibt du dir das mal um, indem du operator+ durch den Namen add ersetzt. Könnte klarer werden.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ 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: