Frage wegen Copy Const



  • Mal ne frage der Copy Construktor der ist doch nichts anderes als eine Refernz auf ein Objekt ?

    Oder was genau ist das ?

    2.Kann man einen Copy konstruktor auf eine andere klasse anwedenen oder nur auf die Klasse in der der Copy Konstruktor erstellt wird

    class Feld{...

    class Spiel{..

    //Konsruktor:
    Spiel(const Feld &b)
    {..
    }

    Wäre sowas möglich



  • Möglich ist es, aber es ist kein Copy-C'tor.
    Es ist dann lediglich ein spezialisierter C'tor.

    Ein Copy-C'tor muss immer den eigenen Typ "kopieren".

    MfG

    evilissimo



  • Dirk450 schrieb:

    Mal ne frage der Copy Construktor der ist doch nichts anderes als eine Refernz auf ein Objekt ?

    nein.

    Dirk450 schrieb:

    Oder was genau ist das ?

    Mit dem Copy Constructor erstellst du ein neues Objekt als Kopie eines anderen. Deswegen heisst's ja auch Copy Constructor...

    Dirk450 schrieb:

    class Feld{...
    
    class Spiel{..
    
    //Konsruktor:
    Spiel(const Feld &b)
    {..
    }
    

    Wäre sowas möglich

    Das ist natürlich möglich, aber kein Copy Constructor.



  • class Datum
     {
      private:
              int m_tag;
              int m_monat;
      public:
              Datum(int tag, int monat) {m_tag = tag; m_monat = monat;}
              void setzeTag(int tag) {m_tag = tag;}
              void setzeMonat(int monat) {m_monat = monat;}
              int gibTag() {return m_tag;}
              int gibMonat()  {return m_monat;}
     };
     class Konto
     {
      private:
              int m_kontonummer;
              int m_saldo;
              Datum *m_p_eroeff;
      public:
              Konto(int kontonummer, int saldo, const Datum &eroeff);
              int gibKontonummer() {return m_kontonummer;}
              int gibSaldo() {return m_saldo;}
              Datum gibEroeffdat() {return *m_p_eroeff;}
              int gibEroeffmonat() {return m_p_eroeff->gibMonat();}
     };
    
     Konto::Konto(int kontonummer, int saldo, const Datum &eroeff)
     {
      m_p_eroeff = new Datum(eroeff.gibTag(), eroeff.gibMonat());
      m_kontonummer = kontonummer;
      m_saldo = saldo;
     }
    

    Bei dem Beispiel hier da ist doch &eroeff geht nicht da das Datum eine zu niedrige qualifikation hat oder ?

    Oder liegt es an was anderem?

    Danke für die schnelle antwort !



  • 1. der copy-constructor erzeugt ein neues objekt das mit den daten eines anderen objektes initialisiert wird welches als referenz übergeben wird ( erzeugt eine kopie des referenzierten objektes).
    2. ist natürlich möglich aber das ist kein copy-constructor.
    K.
    edit: viel zu spät



  • [cpp]
    class Datum {
    ...
    int gibTag() const {return m_tag;}
    int gibMonat() const {return m_monat;}
    ...
    [/cpp]
    Hat aber immer noch nichts mit einem Copy-C'tor zu tun.

    Davon ab:
    -Lern Deutsch (deine "Fehlerbeschreibung" war nicht wirklich aufschlussreich:))
    -Lern Englisch ("Qualifiers")
    -Schnapp dir ein Buch und schlag unter "const" nach



  • m_p_eroeff = new Datum(eroeff);
    

    das wäre ein aufruf eines copy-constructors.
    K.


Anmelden zum Antworten