Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » aufruf der funktion & operator++();

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
29.11.2005, 12:55 Uhr
~ref
Gast


im folgende code wird der funktion &operator++ (); aufgerufen in den zeilen mit den "hier" markierung , die frage ist warum? ist diese funktion ein kopierkostruktor ?, oder nur ein normale klass funktion und was hat i++ mit dieser funktion zu tun ? , selbe frage gilt auch mit counter a= ++i;




C++:
// Listing 14.2

// Den Inkrement-Operator überladen

#include <iostream>



class Counter

{

public:

     Counter();

     ~Counter(){}

     int GetItsVal()const { return itsVal; }

     void SetItsVal(int x) {itsVal = x; }

     void Increment() { ++itsVal; }

     const Counter& operator++ ();



private:

     int itsVal;

};



Counter::Counter():

itsVal(0)

{}



const Counter& Counter::operator++()

{

     ++itsVal;

     return *this;

}



int main()

{

     Counter i;

     std::cout << "Wert von i: " << i.GetItsVal()

         << std::endl;

     i.Increment();

     std::cout << "Wert von i: " << i.GetItsVal()

         << std::endl;

     ++i;

     std::cout << "Wert von i: " << i.GetItsVal()

         << std::endl;

     Counter a = ++i;

     std::cout << "Wert von a: " << a.GetItsVal();

     std::cout << " und von i: " << i.GetItsVal() << std::endl;

     return 0;

}



 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.11.2005, 17:29 Uhr
(un)wissender
Niveauwart


1. Es gibt kein "hier" im Code
2. Es gibt kein i++ im Code (würde so auch nicht kompilieren)

Was denkst du den was operator++ tut?
++i kann man auch so schreiben i.operator++()
i++ kann man so schreiben: o.operator++(int)
Der int dient nur zur Unterscheidung von pre- und postfix.

std::cout<<1;
ist eigentlich std::cout.operator<<(1);

Gogogle mal ein bisschen, nach C++ und operator überladen und du findest alles was du willst.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
29.11.2005, 17:54 Uhr
~ref
Gast


ja ich habe die markierung vergessen zu schreiben ich habe gemeint die zeile in der

++i ;
geschrieben ist , an dieser stelle wird der funktion

const Counter& Counter::operator++()

{

++itsVal;

return *this;

}



gerufen

und ich finde keine gemeinsamkeit zwischen ++i; und der funktion const Counter& operator++ (); das war meine frage , warum wird diese funktion hier aufgerufen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
29.11.2005, 18:44 Uhr
predator



Hö?
Was für eine Gemeinsamkeit?
Meinst du, dass ++i ganz anders als operator++() aussieht?
Das hat (un)wissender eigentlich schon erklärt:
++i ist das gleiche wie i.operator++()
Ich denke, du kannst dir vorstellen, warum man die erste Möglichkeit eingeführt hat...
--
Gruß
predator
Zitat von Edsger W. Dijkstra:
Es ist praktisch unmöglich, einem Studenten gutes Programmieren beizubringen, wenn er vorher in BASIC programmiert hat. Als potenzielle Programmierer sind sie geistig verstümmelt ohne Hoffnung auf Erholung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
29.11.2005, 19:04 Uhr
~ref
Gast


verstehe, danke@ (un)wissender und predator
 
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: